Skip to content

实时通信

本文介绍 youlai-nest 在后台管理场景下的 WebSocket 通知实现,用于与 Vue3 Element Admin 联调。

整体架构

连接与认证流程

通知发布与推送流程

前端关键点(概念)

  • 连接地址示例:ws(s)://host:port/ws?token=<accessToken>
  • 连接成功后监听事件:notice
  • 收到 payload 后刷新“我的通知”列表、更新红点

如何在 NestJS 中启用 WebSocket

依赖

  • @nestjs/websockets
  • @nestjs/platform-socket.io
  • socket.io

模块与 Gateway

  • WebsocketModule
    • 注册 WebsocketGateway
    • AppModule 中导入
  • WebsocketGateway
    • 使用 @WebSocketGateway({ path: "/ws" })
    • handleConnection 中解析并校验 JWT accessToken,维护 username -> socketId 映射

当前网关仅校验 JWT accessToken,若启用 redis-token 需要自行对接 Redis 校验。

基于 MIT 许可发布