private void GetAllUser(object source, OnGetUserEventArgs args) { if (!args.Update) { foreach (string name in args.Users) { if (!OnlineUsers.Any(u => u.Name == name)) { MainDispatcher.Invoke(() => { OnlineUsers.Add(new User { Name = name }); }); } } } else { if (args.AddUser) { MainDispatcher.Invoke(() => { OnlineUsers.Add(new User { Name = args.User }); }); } else { try { var user = OnlineUsers.FirstOrDefault(u => u.Name == args.User); MainDispatcher.Invoke(() => { OnlineUsers.Remove(user); }); } catch { } } } }
public static void RemoveOnlineUser(string userID) { if (OnlineUsers != null) { var onlineUser = OnlineUsers.FirstOrDefault(p => p.ID == userID); if (onlineUser != null) { OnlineUsers.Remove(onlineUser); } } }
public static void AddOnlineUser(HubUser hubUser) { if (OnlineUsers == null) { OnlineUsers = new List <HubUser>(); } if (OnlineUsers.FirstOrDefault(p => p.ID == hubUser.ID) == null) { OnlineUsers.Add(hubUser); } }
public async Task SendMessage(string message) { var user = OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId); var chat = Chats.FirstOrDefault(ch => ch.ChatId == user.ChatId); chat.Messages.Add(new Message { Sender = user.UserName, Content = message }); foreach (var item in chat.ConnectedUsers) { await Clients.Client(item.Id).SendAsync("UpdateChat", chat); } }
public async Task ConnectToChat(int chatId) { var user = OnlineUsers.FirstOrDefault(usr => usr.Id == usr.Id); if (user.ChatId.HasValue) { var chattmp = Chats.FirstOrDefault(ch => ch.ChatId == user.ChatId); chattmp.ConnectedUsers.Remove(user); user.ChatId = null; } var chat = Chats.FirstOrDefault(chat => chat.ChatId == chatId); chat.ConnectedUsers.Add(user); user.ChatId = chat == null? 1: chat.ChatId; if (chat != null) { await Clients.Caller.SendAsync("ConnectToChat", chat); } }
public override Task OnDisconnectedAsync(Exception exception) { var disconectedUser = OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId); OnlineUsers.Remove(disconectedUser); if (disconectedUser == null) { return(null); } var chat = Chats.FirstOrDefault(ch => ch.ChatId == disconectedUser.ChatId); if (disconectedUser != null) { chat.ConnectedUsers.Remove(disconectedUser); } foreach (var item in chat.ConnectedUsers) { Clients.Client(item.Id).SendAsync("UpdateChat", chat); } Clients.All.SendAsync("UserConnected", GetOnlineUsers()); return(base.OnDisconnectedAsync(exception)); }
public async Task Connect(UserViewModel user) { var newUser = new User { Id = Context.ConnectionId, UserName = user.Name }; if (OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId) != null) { var old = OnlineUsers.FirstOrDefault(usr => usr.Id == Context.ConnectionId); old.UserName = user.Name; await Clients.All.SendAsync("UserConnected", GetOnlineUsers()); } else { OnlineUsers.Add(newUser); await Clients.All.SendAsync("UserConnected", GetOnlineUsers()); } var chat = Chats.FirstOrDefault(cht => cht.Name == "Global Chat"); newUser.ChatId = chat.ChatId; chat.ConnectedUsers.Add(newUser); //бага тута //await Clients.Caller.SendAsync("ConnectToChat2", new { newUser.CurrentChat.Messages, Users = new[] { new User { UserName = "******" } } }); //var costilniyChat = new Chat { // ConnectedUsers = newUser.CurrentChat.ConnectedUsers.Select(usr => new User // { // UserName = usr.UserName, // MessageBox = newUser.MessageBox, // Id = newUser.Id, // CurrentChat = null // }).ToList(), // ChatId = newUser.CurrentChat.ChatId, // Messages = newUser.CurrentChat.Messages, // Name = newUser.CurrentChat.Name //}; await Clients.Caller.SendAsync("ConnectToChat", chat); }
/// <summary> /// Finds user from Online Users list by its name /// </summary> /// <param name="username">Username to find</param> /// <returns>User object or null</returns> public User FindOnlineUser(string username) { return(OnlineUsers.FirstOrDefault(x => string.Equals(x.Username, username, StringComparison.OrdinalIgnoreCase))); }