doge 2 天之前
父节点
当前提交
5a049b364a
共有 1 个文件被更改,包括 31 次插入 和 0 次删除
  1. 31 0
      docs/后端/WebSocket数字-ThinkSwoole入口补充.md

+ 31 - 0
docs/后端/WebSocket数字-ThinkSwoole入口补充.md

@@ -0,0 +1,31 @@
+# WebSocket 数字:Think-Swoole 入口补充
+
+独立的 `php think websocket:start` 服务原本已支持数字推送。Think-Swoole 默认 `think\swoole\websocket\Handler` 只分发事件,之前没有注册数字事件,因此使用这一入口时 `get_floating_number` 不会回包。
+
+本次为框架入口补上连接、消息、断开事件以及每五秒推送。数字保存在预先创建的跨进程共享表,只有 worker 0 更新,所有连接读取同一数值;断开后清理连接定时器。
+
+发布到实际监听 9501 的项目目录,包含:
+
+- `app/common/service/FloatingNumberFrameworkListener.php`
+- `app/event.php`
+- `config/swoole.php` 中新增的 `tables.floating_number`
+- `public/websocket-test.html`
+
+保留线上现有 `websocket.enable`、`websocket.route`、监听端口及其他事件配置。随后完整重启实际监听 9501 的进程;只重载 Nginx 无法加载 PHP 常驻进程中的新事件。不要另起第二套进程抢占端口。
+
+如需核对实际进程,服务器执行:
+
+```bash
+ss -lntp | grep ':9501'
+ps -ef | grep -E '[p]hp.*(websocket:start|swoole)'
+```
+
+测试页默认连接页面当前域名和端口,也可填写实际地址。框架入口连接后会先收到:
+
+```json
+{"type":"welcome","features":["floating_number"],"service":"think_swoole"}
+```
+
+然后收到 `floating_number`。发送 `{"type":"get_floating_number"}` 应立即取得同格式数字;客户端提交的数值不会覆盖服务端数值。
+
+本地通过真实框架 Handler、事件分发、共享表绑定及定时回调验证;使用隔离的 Swoole 传输替身,不代表线上 9501 已验证。