示例#1
0
        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);
        }
示例#2
0
        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);
        }