Beispiel #1
0
        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));
        }