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)); }