Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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)));
 }