예제 #1
0
 public async Task SendMessageToAllOutsideRoom(ChatPayloadDTO payload)
 {
     foreach (var user in _userService.GetUsersOutRooms())
     {
         await SendMessage(user.Id, payload.Message);
     }
 }
예제 #2
0
 public async Task SendMessageToAllUsers(ChatPayloadDTO payload)
 {
     foreach (var user in _userService.GetAllUsers())
     {
         await SendMessage(user.Id, payload.Message);
     }
 }
예제 #3
0
 public async Task SendPrivateMessage(ChatPayloadDTO payload)
 {
     if (_userService.IsUserInRoom(payload.TargetUserId, payload.RoomId.Value))
     {
         await SendMessage(payload.UserId, payload.Message);
         await SendMessage(payload.TargetUserId, payload.Message);
     }
     else
     {
         await SendMessage(payload.UserId, payload.Message);
     }
 }
예제 #4
0
 public async Task SendRoomMessageToAll(ChatPayloadDTO payload)
 {
     if (payload.RoomId.HasValue)
     {
         foreach (var user in _userService.GetUsersInRoom(payload.RoomId.Value))
         {
             if (user.Id.Equals(payload.UserId))
             {
                 if (AllowSendToOrignUser(payload.Event))
                 {
                     await SendMessage(user.Id, payload.Message);
                 }
             }
             else
             {
                 await SendMessage(user.Id, payload.Message);
             }
         }
     }
 }
예제 #5
0
        public async Task HandleResponse(ChatPayloadDTO payload)
        {
            switch (payload.Event)
            {
            case EventEnum.RegisterUser:
                await SendMessage(payload.UserId, payload.Message);

                break;

            case EventEnum.Messaging:
                if (payload.IsPrivate.HasValue && payload.IsPrivate.Value == true &&
                    !String.IsNullOrWhiteSpace(payload.TargetUserId))
                {
                    await SendPrivateMessage(payload);
                }
                else
                {
                    await SendRoomMessageToAll(payload);
                }

                break;

            case EventEnum.EnterRoom:
                await SendMessage(payload.UserId, payload.Message);

                break;

            case EventEnum.ExitRoom:
                await SendMessage(payload.UserId, payload.Message);

                break;

            case EventEnum.CreateRoom:
                await SendMessageToAllOutsideRoom(payload);

                break;

            case EventEnum.UpdateUserList:
                await SendRoomMessageToAll(payload);

                break;

            case EventEnum.UpdateRoomList:
                await SendMessageToAllOutsideRoom(payload);

                break;

            case EventEnum.WelcomeMessage:
                await SendMessage(payload.UserId, payload.Message);

                break;

            case EventEnum.GoodbyeMessage:
                await SendMessage(payload.UserId, payload.Message);

                break;

            case EventEnum.SocketDisconnect:
                break;

            case EventEnum.UpdateUsersRooms:
                await SendMessageToAllOutsideRoom(payload);

                break;

            case EventEnum.Error:
                await SendMessage(payload.UserId, payload.Message);

                break;

            default:
                break;
            }
        }