@nestjs/websocket基本使用

网关组件

@WebSocketGateway({ namespace:'ddd', port :3001})
export class EventsGateway {
  @WebSocketServer() server;

  @SubscribeMessage('message')
  onEvent(client, data): Observable> {
    //console.log('接收到消息')
    //console.dir(client)
    //console.dir(this.server)
    const event = 'events';
    const response = [1, 2, 3];

    return Observable.from(response).map(res => ({ event, data: res }));
  }
}

一个网关组件代表了一个socket.io命名空间端点,如上要连接的端点url为:http://localhost:3001/ddd,即连接socket.io时的端口号需要单独设置,与应用程序端口号并没有关系,

其中命名空间需要作为路径来访问,如果是根命名空间则不需要

其中的订阅消息的装饰器SubscribeMssage为一个sockt.io事件监听器,监听的事件名就是装饰器参数message,第一个参数为Socket,代表了指定客户端对这个命名空间的连接,

data则为发送的数据包

可以使用socket.emit('event',{name:'李四',age:23})向客户端发回数据,第一个参数为事件名,第二个参数为数据对象


在路由中使用网关组件

@Controller()
  export class AppController {
    constructor(private readonly eventsG

你可能感兴趣的:(#,nest.js,#,socket.io,nestjs)