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)); } } }
public override Task OnConnectedAsync() { var currentUser = new UserSignalR(Context.User.Identity.Name, Context.ConnectionId); ChatStore.UsersOnline.Add(currentUser); NewConnectedUser(currentUser); return(base.OnConnectedAsync()); }
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); } }
private void NewDisconnectedUser(UserSignalR currentUser) { Clients.Others.SendAsync("NewDisconnectedUser", currentUser); }