如没有看过
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));