实时通信
本文介绍 youlai-nest 在后台管理场景下的 WebSocket 通知实现,用于与 Vue3 Element Admin 联调。
整体架构
连接与认证流程
通知发布与推送流程
前端关键点(概念)
- 连接地址示例:
ws(s)://host:port/ws?token=<accessToken> - 连接成功后监听事件:
notice - 收到 payload 后刷新“我的通知”列表、更新红点
如何在 NestJS 中启用 WebSocket
依赖
@nestjs/websockets@nestjs/platform-socket.iosocket.io
模块与 Gateway
WebsocketModule- 注册
WebsocketGateway - 在
AppModule中导入
- 注册
WebsocketGateway- 使用
@WebSocketGateway({ path: "/ws" }) - 在
handleConnection中解析并校验 JWT accessToken,维护username -> socketId映射
- 使用
当前网关仅校验 JWT accessToken,若启用
redis-token需要自行对接 Redis 校验。
