public async Task ChatMessage(GroupMessageDto payload, User user, Group group, IClientProxy clients) { if (!string.IsNullOrEmpty(user.ConnectionId)) { await clients.SendAsync("IncomingMessage", payload); } if (string.IsNullOrEmpty(user.FcmToken)) { return; } var serializedMessage = JsonConvert.SerializeObject(payload); var message = new Message() { Token = user.FcmToken, Data = new Dictionary <string, string>() { { "type", "IncomingMessage" }, { "data", serializedMessage } }, Android = new AndroidConfig() { } }; var response = await FirebaseMessaging.DefaultInstance.SendAsync(message); }
public async Task JoinGroup(GroupMessageDto groupMessage) { var user = await _userTracker.GetUser(Context.ConnectionId); user.Name = groupMessage.PlayerName; var groupId = groupMessage?.GroupId ?? user.GroupId; user.GroupId = groupId; var usersOnline = await GetUsersOnline(); var groupUsersOnline = usersOnline.Where(u => u.GroupId == user.GroupId); await _userTracker.UpdateUser(Context.ConnectionId, user); await Groups.AddToGroupAsync(Context.ConnectionId, groupId); await Clients.Group(groupId).SendAsync(HubEvents.JoinGroup, groupUsersOnline); await Clients.Client(Context.ConnectionId).SendAsync(HubEvents.UpdateUser, user); }
public async Task <Message> SendMessage(string text, string groupGuid, string userGuid, IClientProxy clients) { var sender = await _users.Get(userGuid); if (sender == null) { throw new ArgumentException("Login not found"); } var group = await _groups.Get(groupGuid); if (group == null) { throw new ArgumentException("Group not found"); } var participants = await _groups.GetGroupUsers(groupGuid); if (participants.Count(user => user.UserGuid == sender.UserGuid) < 1) { throw new ArgumentException("User is not in a group"); } var message = new Message() { Group = group, Sender = sender, Text = text, Time = DateTime.Now }; var m = await _messages.Create(message); var incoming = new GroupMessageDto(message); var users = await _groups.GetGroupUsers(groupGuid); foreach (var user in users) { await _pusher.ChatMessage(incoming, user, group, clients); } return(message); }