场景:
- 在商户后台, 若有用户下单, 实时通知商户[Ajax 轮询, 并不是实时]
- 后台批量导入产品, 每成功导入一个, 就通知前台, 显示导入成功
实现原理:
- 服务端 建立一个 Websocket Worker, 用于维护客户端长连接
- 服务端 Websocket Worker 启动后, 内部建立一个 Text Worker, 由于 Websocket Worker 与 Text Worker 是同一个进程, 方便共享客户端连接
- 某个独立的后台系统, 通过 Text 协议与 Text Worker 通讯
- Text Worker 操作 Websocket Worker 完成数据推送
执行流程:
- 启动 start.php, 运行命令:php start.php start -d
- 浏览器打开 client.html, 支持开启多个, 等于绑定UID, 并接收服务端推送
- 运行 send.php, 点击下单, client.html 会收到服务端推送的消息
服务端启动文件 start.php
1 |
|
前端绑定UID并接收推送的JS, client.html
1 |
|
后端推送消息的代码, send.php
1 |
|