NestJS Logo
NestJS 中文文档
v10.0.0
  • 介绍
  • 快速上手
  • 控制器
  • 提供者
  • 模块
  • 中间件
  • 异常过滤器
  • 管道
  • 守卫
  • 拦截器
  • 自定义装饰器
  • 自定义提供者
  • 异步提供者
  • 动态模块
  • 依赖注入作用域
  • 循环依赖
  • 模块引用
  • 懒加载模块
  • 执行上下文
  • 生命周期事件
  • 发现服务
  • 跨平台无关性
  • 测试
迁移指南
API 参考
官方课程
  1. 文档
  2. WebSocket 通信
  3. 管道

管道(Pipes)

常规管道与 WebSocket 管道在本质上没有区别。唯一的不同在于,抛出异常时不应使用 HttpException,而应使用 WsException。此外,所有管道只会应用于 data 参数(因为对 client 实例进行校验或转换没有意义)。

提示

WsException 类由 @nestjs/websockets 包导出。

绑定管道(Binding pipes)

下面的示例演示了如何手动实例化一个方法作用域的管道。与基于 HTTP 的应用程序类似,你也可以使用网关作用域的管道(即在网关类前加上 @UsePipes() 装饰器)。

@UsePipes(new ValidationPipe({ exceptionFactory: (errors) => new WsException(errors) }))
@SubscribeMessage('events')
handleEvent(client: Client, data: unknown): WsResponse<unknown> {
  const event = 'events'
  return { event, data }
}
异常过滤器
守卫