private CleanClientMeta GetCleanClientMeta(string groupId = "") { ChatClientMeta meta = _storage.GetUserByConnectionId(Context.ConnectionId); return(new CleanClientMeta { UserName = meta.User.FirstName, GroupId = !String.IsNullOrEmpty(groupId) ? groupId : meta.GroupId }); }
public async Task SendMessage(string message) { ChatClientMeta meta = _storage.GetUserByConnectionId(Context.ConnectionId); if (meta.GroupId == null) { throw new HubException("Please, join group if you want to send message"); } await Clients.Group(meta.GroupId).SendAsync(ChatEvents.SendMessage, new SimpleMessage { User = meta.User.FirstName, Message = message }); }
public async Task LeaveGroup(string groupId) { ChatClientMeta meta = _storage.GetUserByConnectionId(Context.ConnectionId); var group = _storage.GetGroupById(groupId); if (group == null) { throw new Exception("Group with the same id doesnt exists"); } _storage.UpdateConnection(Context.ConnectionId, meta.User, null); await Groups.RemoveFromGroupAsync(Context.ConnectionId, group.Id); await Clients.Caller.SendAsync(ChatEvents.GroupLeft, group); NofifyAboutLeaving(group.Id, meta.User.FirstName); }
public void AddConnection(T key, ChatUser user) { if (user == null) { return; } lock (_connections) { if (!_connections.TryGetValue(key, out ChatClientMeta meta)) { meta = new ChatClientMeta { User = user }; _connections.Add(key, meta); } } }
public async Task EnterGroup(string groupId) { ChatClientMeta meta = _storage.GetUserByConnectionId(Context.ConnectionId); var group = _storage.GetGroupById(groupId); if (group == null) { throw new Exception("Group with the same id doesnt exists"); } _storage.UpdateConnection(Context.ConnectionId, meta.User, group.Id); await Groups.AddToGroupAsync(Context.ConnectionId, group.Id); await Clients.Caller.SendAsync(ChatEvents.GetGroupById, group); await Clients.Caller.SendAsync(ChatEvents.Notify, $"You joined to '{group.Name}' group!"); await Clients.OthersInGroup(group.Id) .SendAsync(ChatEvents.Notify, $"{meta.User.FirstName} joined to group!"); }
public void UpdateConnection(T key, ChatUser user, string groupId) { if (user == null) { return; } lock (_connections) { if (!_connections.TryGetValue(key, out ChatClientMeta meta)) { return; } _connections[key] = new ChatClientMeta { User = user, GroupId = groupId }; } }