public async Task Connect(string nickname, string gameId = null) { if (string.IsNullOrEmpty(gameId)) { gameId = Guid.NewGuid().ToString().Substring(0, 5); } await Clients.Client(Context.ConnectionId).SendAsync("onConnected", gameId); _userManagerService.AddOrUpdate(nickname, gameId, Context.ConnectionId); string userGroup = gameId + "_" + nickname; // отключаем пользователей с тем же ником в той же игре await Groups.AddToGroupAsync(Context.ConnectionId, userGroup); await Clients.OthersInGroup(userGroup) .SendAsync("onDisconnected", "Duplicate session"); // оповещаем пользователей в той же игре о подключении нового игрока await Groups.AddToGroupAsync(Context.ConnectionId, gameId); await Clients.Group(gameId) .SendAsync("onUsersChanged", _userManagerService.GetActivePlayers(gameId)); }