如沒有看過
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));