public override Task OnDisconnectedAsync(Exception?exception) { var claims = Context.User.Claims; var userId = Convert.ToInt64(claims.FirstOrDefault(x => x.Type == "userId").Value); var user = _userManager.Users.FirstOrDefault(x => x.Id == userId); var result = SignalRMatchingManager.RemoveMatch(new ConnectedUser(user, Context.ConnectionId)); if (result.Result == 1) { Clients.All.SendAsync("matchListChanged", SignalRMatchingManager.GetMatches()); } if (result.Result == 2) { Clients.All.SendAsync("matchListChanged", SignalRMatchingManager.GetMatches()); Clients.Client(result.OppositeConnectionId).SendAsync("matchTerminated", true); } //2 İSE DİĞER KULLANICIYA DA HABER VER. SignalRConnectionManager.DisconnectUser(userId); return(base.OnDisconnectedAsync(exception)); }
public override Task OnConnectedAsync() { var claims = Context.User.Claims; var userId = Convert.ToInt64(claims.FirstOrDefault(x => x.Type == "userId").Value); var user = _userManager.Users.FirstOrDefault(x => x.Id == userId); SignalRConnectionManager.ConnectUser(new ConnectedUser(user, Context.ConnectionId)); return(base.OnConnectedAsync()); }
public async Task JoinMatch(long targetUserId) { var claims = Context.User.Claims; var userId = Convert.ToInt64(claims.FirstOrDefault(x => x.Type == "userId").Value); var currentUser = SignalRConnectionManager.GetConnectedUser(userId); var targetUser = SignalRConnectionManager.GetConnectedUser(targetUserId);; string targetUserConnectionId = string.Empty; var result = SignalRMatchingManager.JoinMatch(currentUser, targetUser, ref targetUserConnectionId); if (!result) { await Clients.Caller.SendAsync("joinedMatch", false); } await Clients.Caller.SendAsync("joinedMatch", true); await Clients.Client(targetUserConnectionId).SendAsync("joinedMatch", true); await Clients.All.SendAsync("matchListChanged", SignalRMatchingManager.GetMatches()); }
public IActionResult GetConnectedUsersToHub() { return(Ok(new DataResponseModel <List <ConnectedUser> >(SignalRConnectionManager.GetConnectedUsers(), true))); }