SuperAPI AI 工具集

websocket-engineer

编程与开发

查看项目

更新于 10-15 21:40

技能介绍

用途:在构建实时通信系统时使用,适用于 WebSocket 或 Socket.IO 的双向消息、基于 Redis 的横向扩展、在线状态(presence)等场景。

主要能力: 核心工作流覆盖需求分析(连接规模、消息量、延迟)、架构设计(集群、发布订阅、状态管理、故障转移)、实现(带认证、房间、事件的 WebSocket 服务)、本地验证、扩展与监控。 提供参考文档:protocol.md(握手、帧、ping/pong、关闭码)、scaling.md(横向扩展、Redis 发布订阅、粘性会话)、patterns.md(房间、命名空间、广播、确认)、security.md(认证、授权、限流、CORS)、alternatives.md(SSE、长轮询及何时选 WebSocket)。 给出服务端与客户端代码示例:服务端用 Socket.IO 配合 JWT 认证中间件、Redis 适配器(createAdapter、pubClient/subClient)、presence 记录、join-room 与 message 事件及 disconnect 清理;客户端展示重连(指数退避、随机抖动、消息队列)与手动重连处理。 输出模板包含服务端配置、事件处理器、客户端库与扩展策略简述。

必要用法与验证: 本地测试可执行 npx wscat -c ws://localhost:3000,确认缺失/无效 token 被拒绝、房间加入/离开事件与消息投递;扩展前先验证 Redis 连接和发布订阅往返,启用适配器后配置粘性会话并用多实例测试连接;随后设置负载均衡。

限制与约束: 必须对负载均衡使用粘性会话(WebSocket 连接有状态,请求须路由到同一实例);实现心跳/ping-pong 检测死连接;用房间/命名空间做消息作用域而非在应用逻辑中过滤;断连窗口内排队消息避免静默丢失;横向扩展前规划每实例连接上限。不得在无集群策略时把大量状态存于内存(应使用 Redis 或外部存储);不得在未显式处理升级的情况下让 WebSocket 与 HTTP 共用同一端口;不得忘记处理连接清理;上线前必须做负载测试。

涉及知识:Socket.IO、ws、uWebSockets.js、Redis 适配器、粘性会话、nginx WebSocket 代理、JWT over WebSocket、房间/命名空间、确认、二进制数据、压缩、心跳、背压、水平 Pod 自动扩缩。