Files
vibe_coding/.cursor/skills/websocket-service/SKILL.md
2026-03-05 21:27:11 +08:00

1.8 KiB
Raw Blame History

name, version, description
name version description
websocket-service 1.0.0 在 Hyperf 中搭建 Swoole WebSocket 服务器。当需要实时通信、消息推送或通知功能时使用。含心跳检测和前端集成。

Swoole WebSocket Service

触发条件

用户需要实时通信功能:通知推送、在线状态、实时数据更新、聊天功能。

执行流程

Phase 0: 加载规范

读取 .cursor/rules/016-swoole.mdc013-backend.mdc,提取 WebSocket 配置、协程安全、fd 存储、心跳、认证鉴权。

Phase 1: 服务端配置

config/autoload/server.php 添加 ws 服务type SERVER_WEBSOCKETport 环境变量callbacks ON_HAND_SHAKE/ON_MESSAGE/ON_CLOSE。

Phase 2: 连接管理器

WebSocketConnectionManagerRedis 存储 fd→userId/serverIduserId→{serverId:fd} 集合。addConnection、removeConnection、getUserConnections、getUserIdByFd、isOnline。支持多服务器。

Phase 3: WebSocket Controller

OnOpenquery token 验证 JWT无效 closeaddConnectionpush connected。OnMessageping→pong。OnCloseremoveConnection。

Phase 4: 消息推送服务

WebSocketPushServicepushToUser、pushToUsers、broadcastRedis publish 跨服。Inject Sender、ConnectionManager。

Phase 5: 前端客户端

WebSocketClientconnect(url?token=)、on(type, callback)、心跳 30s、断线指数退避重连。完整实现见 Tier 3

验证

  1. WebSocket 在配置端口启动
  2. Token 认证成功才连接
  3. 无效 Token 立即断开
  4. 心跳 30s 正常
  5. 断线自动重连
  6. 连接信息存 Redis
  7. 推送正确到达目标用户

Tier 3 深度参考

文件 内容
references/ws-implementation.md 配置、ConnectionManager、Controller、PushService、前端 Client 完整代码