Nest 中使用 Websocket 給所有客戶端發送廣播的辦法

如沒有看過 Nest 官網的 WebSocket 用法,請先查看官網的使用方式:[傳送門](https://docs.nestjs.cn/6/websockets)

按照官網的方式,進行多個回覆,發現還是隻有當前的客戶端能接收到返回信息,其他客戶端都收不到廣播,這下面是官網的代碼:

@SubscribeMessage('events')
handleEvent(client: Client, data: unknown): WsResponse<unknown> {
  const event = 'events';
  return { event, data };
}

現在我們改寫一下:

  • client.emit('events', message):通知當前對應客戶端 events 事件
  • client.broadcast.emit('events', data):通知其他客戶端 events 事件
@SubscribeMessage('events')
handleEvent(client, data: unknown): WsResponse<unknown> {
   // 通知對應客戶端 events 事件
   client.emit('events', data);
   // 通知其他客戶端 chat 事件
   client.broadcast.emit('events', data);
}

這樣改寫之後,在服務端發送廣播的時候,所有客戶端的 socket 都會接受到消息了。
異步消息也一樣可以使用這種方式發送廣播。

記得要先在客戶端註冊 events事件才能收到消息:
socket.on('events', data => console.log(data));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章