跳到主要内容
AidoSaaS-CMS 企业主题 · 全站可视化编辑 订阅 站点地图

beeshop 实时 IM 通讯网关:WebSocket + 在线状态 + 消息推送

beeshop 实时 IM 通讯网关:WebSocket + 在线状态 + 消息推送

beeshop 内置实时 IM:WebSocket 网关常驻进程,支持在线状态、消息推送与跨端同步。本文讲清网关启动、Nginx 反代与零依赖兜底。

beeshop 的实时 IM 是内置能力,不是外接服务:一个常驻的 WebSocket 网关,支撑商家、骑手与买家之间的在线状态、消息推送与跨端同步。

网关进程

由 public/im/backend/src/ws/run.php 启动,默认 WS 端口 8080、控制端口 8081,默认只绑 127.0.0.1,经 Nginx /ws 反代对外。启动前会调用 AdminController::ensureTables() 自检 IM 业务表。

IM 网关架构
占位图:IM 网关经 Nginx /ws 反代对外的拓扑
IM 消息投递与会话状态机
占位图:IM 消息投递与会话状态机

两种运行模式

  • Ratchet 模式:若已 composer install,使用 Ratchet 作为 WS 服务;
  • NativeServer 兜底:无 composer 时,自动走零依赖的内置 NativeServer,保证「上传即跑」。

用 Supervisor 常驻

CODE
command=php /www/wwwroot/beeshop.ademo.cn/public/im/backend/src/ws/run.php 8080 8081

建议用 Supervisor 托管,崩溃自动拉起。

排障

  • curl -i https://域名/ws 应返回 101 Switching Protocols;
  • 若 404,检查 Nginx 的 /ws 反代是否覆盖默认 location;
  • 若连接被拒,确认网关进程已启动且绑在 127.0.0.1:8080。

常见问题

没有 composer 也能跑 IM 吗?

能。网关优先用 Ratchet(若已 composer install),否则自动走零依赖 NativeServer 兜底。

网关为什么只绑 127.0.0.1?

出于安全,网关不裸绑公网,经 Nginx 的 /ws 反代对外暴露。

分享

李文心

本文作者 · 发布于 2026-09-12

全部文章

评论 (0)

还没有评论,来抢沙发吧。