WebSocket 服务

WebSocket 服务基于现有 swoole ws server上的进一步封装实现。即开启websocket服务的同时可以处理http请求。

安装

  1. composer require swoft/websocket-server

功能特色

  • 快速的搭建使用 websocket server
  • 支持完全的自定义流程处理,如果你不想使用框架自带的处理
  • 支持消息阶段的数据解析和路由调度
  • 通用的消息发送方法封装(send, sendToSome, sendToAll, broadcast 等)

连接处理流程

  1. 握手请求 -------> 接收到WebSocket请求(根据path找到处理模块 eg EchoModule)
  2. |
  3. |使用模块类中标记的握手方法验证请求
  4. |
  5. v
  6. 握手成功,接受连接
  7. |
  8. | 创建连接上下文Connection,存储到Session管理器
  9. | (含有fd, request等信息)
  10. |
  11. v
  12. 消息请求 --> 接收消息
  13. |
  14. |创建消息上下文Context,存储到Context管理器
  15. |同时通过CoID会与Session的绑定关系
  16. |
  17. V
  18. 解析消息数据
  19. |
  20. |得到消息指令和消息body
  21. |(根据消息指令找到处理控制器 eg ChatController)
  22. |
  23. V
  24. 调度消息处理
  25. |
  26. |调用对应的message控制器方法处理
  27. |
  28. V
  29. 打包返回数据
  30. |
  31. |销毁此次消息请求的上下文Context
  32. |同时删除与Session的绑定关系
  33. |
  34. v
  35. 得到响应 <--- 返回结果
  36. |
  37. 消息请求 --> |
  38. . |
  39. . |(重复上述消息处理流程)
  40. . |
  41. <-- 得到响应 |
  42. |
  43. v
  44. 断开连接 -——-——--> 收到关闭连接事件
  45. |
  46. | 销毁连接上下文,从Session管理器删除此连接
  47. |
  48. v
  49. 关闭连接