• WebSocket 服务
    • 安装
    • 功能特色
    • 连接处理流程

    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. 关闭连接