php 使用 gateway-worker 创建websocket 服务器 (双ws架构)

  1. 项目背景描述,   有这样的需要, 用户端需要显示股票,期货, 加密货币等平台提供的数据,  对接的平台对api的请求是有次数限制的, 所以需要后端弄一个服务做跳板 中继服务器这类的
  2. 框架以 thinkphp 5.1 为例 php 8.0
  3. 流程
    1.   composer安装 "workerman/gateway-worker": "^3.1"   (主要要跟框架版本兼容)
    2.       创建 websocket 服务
    3.   配置nginx 使得前端可以 通过ws 访问
    4.       守护进程方式启动 (关闭命令行窗口依然可以运行)

  以下是步骤2开始 

  采用的是命令行的方式启动的写法

image

 

image

 配置好command

image

 这样就可以通过 命令。 php think itick:ws 启动了。

下面通过gateway-worker 创建websocket 服务 文档 https://www.workerman.net/doc/gateway-worker/ungroup.html

image

 这里配置的eventHandler指向的类用户处理业务逻辑

image

image

 

 

这样配置好了 Gateway,  Business, Register 

关键理解点

  1. Gateway:就像公司的前台接待员,直接和客户打交道,维持连接

  2. Business:就像业务员,不直接见客户,但处理实际业务(订阅逻辑)

  3. Register:就像公司通讯录,让前台和业务员能互相找到对方

  4. Itick-Client:就像市场调研员,专门从外部获取行情信息 (这里是对接第三方平台的 ,比如股票, 期货 平台 获取他们提供的数据, 然后转发给用户)

  5. image关系图如下

    WeChat1bd96e40254574ef01aa6ebf13ea5972

     

  6. image

     

  7.  大体的服务创建好之后, 优化 比如心跳, 重连机制,  日志, 错误 等 (把代码交给AI) 

  8. 代码写好了,  开放了安全组对应的端口, 发现用户无法连接上,  最后发现, 需要配置nginx
  9. image

     

  10. 配置好之后 就可以通过命令行启动了,  php think xxx -d (以守护进程方式启动) 需要配置守护进程才行 (不会问AI)

    image

     

  11. 然后查看是否启动成功 

    image

     

  12. 查看监听端口等

    image

     

  13. 停止服务
  14.  

  15. 剩余的自己探索
posted @ 2026-03-05 03:20  发奋图钱小菜鸡  阅读(1)  评论(0)    收藏  举报