Example #1
0
        public override Task OnConnected()
        {
            using (_userRepo = new UserRepo(_ctx))
            {
                using (_friendRepo = new FriendRepo(_ctx))
                {
                    var username = Context.Request.QueryString["username"];
                    var dbUser   = _userRepo.Users.FirstOrDefault(x => x.UserName == username);
                    var newUser  = dbUser;
                    newUser.IsOnline = true;

                    _userRepo.Edit(dbUser, newUser);

                    _userRepo.SaveChanges();

                    var userFriends = _friendRepo.UserFriends(username);

                    var user = new UserSignalR()
                    {
                        ConnectionId = Context.ConnectionId,
                        Username     = username,
                        Friends      = userFriends.ToList()
                    };


                    _connectedUsers.TryAdd(username, user);

                    Clients.AllExcept(Context.ConnectionId).clientConnected(username);
                    return(Clients.Caller.connected(userFriends));
                }
            }
        }
Example #2
0
        public override Task OnConnectedAsync()
        {
            var currentUser = new UserSignalR(Context.User.Identity.Name, Context.ConnectionId);

            ChatStore.UsersOnline.Add(currentUser);
            NewConnectedUser(currentUser);
            return(base.OnConnectedAsync());
        }
Example #3
0
        public override async Task OnDisconnected(bool stopCalled)
        {
            using (_userRepo = new UserRepo(_ctx))
            {
                UserSignalR u        = null;
                var         username = Context.Request.QueryString["username"];
                var         dbUser   = _userRepo.Users.FirstOrDefault(x => x.UserName == username);
                var         newUser  = dbUser;
                newUser.IsOnline = false;
                _userRepo.Edit(dbUser, newUser);

                _connectedUsers.TryRemove(username, out u);

                await _userRepo.SaveChangesAsync();

                Clients.AllExcept(Context.ConnectionId).clientDisconnected(username);
            }
        }
Example #4
0
 private void NewDisconnectedUser(UserSignalR currentUser)
 {
     Clients.Others.SendAsync("NewDisconnectedUser", currentUser);
 }