ReceiveHandleService.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\Message;
  4. use App\Service\SocketClientService;
  5. use Swoole\Http\Response;
  6. use Swoole\WebSocket\Frame;
  7. use Swoole\WebSocket\Server;
  8. class ReceiveHandleService
  9. {
  10. /**
  11. * @var SocketClientService
  12. */
  13. private $client;
  14. // 消息事件绑定
  15. const EVENTS = [
  16. EVENT_TALK => 'onTalk',
  17. EVENT_TALK_KEYBOARD => 'onKeyboard',
  18. ];
  19. /**
  20. * ReceiveHandleService constructor.
  21. *
  22. * @param SocketClientService $client
  23. */
  24. // public function __construct(SocketClientService $client)
  25. // {
  26. // $this->client = $client;
  27. // }
  28. /**
  29. * 对话文本消息
  30. *
  31. * @param Response|Server $server
  32. * @param Frame $frame
  33. * @param array|string $data 解析后数据
  34. * @return void
  35. */
  36. public function onTalk($server, Frame $frame, $data)
  37. {
  38. var_dump("测试数据发送==========");
  39. return true;
  40. // $user_id = $this->client->findFdUserId($frame->fd);
  41. // if ($user_id != $data['sender_id']) return;
  42. //
  43. // // 验证消息类型
  44. // if (!in_array($data['talk_type'], TalkModeConstant::getTypes())) return;
  45. //
  46. // // 验证发送消息用户与接受消息用户之间是否存在好友或群聊关系
  47. // $isTrue = UserRelation::isFriendOrGroupMember($user_id, (int)$data['receiver_id'], (int)$data['talk_type']);
  48. // if (!$isTrue) {
  49. // $server->push($frame->fd, json_encode(['event_error', [
  50. // 'message' => '暂不属于好友关系或群聊成员,无法发送聊天消息!'
  51. // ]]));
  52. // return;
  53. // }
  54. // di()->get(TalkMessageService::class)->insertText([
  55. // 'talk_type' => $data['talk_type'],
  56. // 'user_id' => $data['sender_id'],
  57. // 'receiver_id' => $data['receiver_id'],
  58. // 'content' => $data['text_message'],
  59. // ]);
  60. }
  61. /**
  62. * 键盘输入消息
  63. *
  64. * @param Response|Server $server
  65. * @param Frame $frame
  66. * @param array|string $data 解析后数据
  67. * @return void
  68. */
  69. // public function onKeyboard($server, Frame $frame, $data)
  70. // {
  71. // event()->dispatch(new TalkEvent(TalkEventConstant::EVENT_TALK_KEYBOARD, [
  72. // 'sender_id' => (int)$data['sender_id'],
  73. // 'receiver_id' => (int)$data['receiver_id'],
  74. // ]));
  75. // }
  76. }