本技能聚焦实时应用开发,主题为 WebSocket、实时通信与事件驱动架构。
用途:用于构建需要双向或推送式实时通信的系统,例如聊天室、房间广播、用户在线状态、输入提示、通知推送等场景。
主要能力:
- WebSocket:基于 ws 库的 Node.js 服务端实现,含客户端管理、房间(rooms)加入/离开、房间内广播、心跳 ping/pong、连接确认与断开清理;客户端封装自动重连(指数退避)、消息队列、按消息类型分发与通配符处理器。
- Socket.IO:服务端支持 CORS、Redis Adapter 水平扩展、基于 token 的认证中间件、命名空间(如 /chat)、个人房间、房间权限校验、历史消息、正在输入提示,以及向指定用户发送事件;客户端提供 React 的 SocketProvider 与 useChatRoom 钩子。
- Server-Sent Events:Express 服务端设置 text/event-stream 等响应头,发送命名事件、keep-alive 保活、按用户订阅与断开清理;客户端用 EventSource 监听命名事件。
- Redis Pub/Sub:使用 ioredis 发布事件、订阅频道、按模式订阅(如 room:*)。
使用方式:示例代码按服务端与客户端分别给出,需自行安装 ws、socket.io、@socket.io/redis-adapter、redis/ioredis、express 等依赖,并配置 ALLOWED_ORIGINS、REDIS_URL 等环境变量。文中未提供统一安装命令。
适用场景:聊天与协作、实时通知、事件驱动架构,以及需要水平扩展的实时服务。
限制:资料未说明具体版本要求、性能指标、安全加固细节与部署步骤;代码中的 verifyToken、checkRoomAccess、getRecentMessages、saveMessage 等函数为占位引用,需自行实现;所有代码仅作示例,未提供完整可运行项目结构。