예제 #1
0
        public override Task OnDisconnectedAsync(Exception exception)
        {
            var lobbyId  = (long)Context.Connection.Metadata["lobbyId"];
            var gameName = (string)Context.Connection.Metadata["gameName"];

            var lobby = _lobbyService.FindByIdAndGameName(lobbyId, gameName);

            lobby.RemovePlayer(new Player(Context.User));
            if (lobby.ConnectedPlayers.Count == 0)
            {
                _lobbyService.Remove(gameName, lobby);
            }
            var groupName = GenerateGroupName(lobbyId, gameName);

            Clients.Group(groupName).InvokeAsync("updatePlayers", ConvertPlayersToNames(lobby.ConnectedPlayers));
            return(base.OnDisconnectedAsync(exception));
        }