Nestjs网关websocket作为客户端
如何在nestjs中创建到web套接字服务器的客户端连接 例如:有一个web套接字或socket.io服务器,它每秒向其所有客户端发送一条消息 如何在nestjs中正确连接到此服务器并侦听来自它的消息事件。我是否必须为我的WebSocketGateway创建一个特殊适配器才能成为客户机?Nestjs网关websocket作为客户端,websocket,socket.io,nestjs,Websocket,Socket.io,Nestjs,如何在nestjs中创建到web套接字服务器的客户端连接 例如:有一个web套接字或socket.io服务器,它每秒向其所有客户端发送一条消息 如何在nestjs中正确连接到此服务器并侦听来自它的消息事件。我是否必须为我的WebSocketGateway创建一个特殊适配器才能成为客户机? 有可能让Websotsketgateva成为客户吗?如果没有,正确的方法是什么?我可以建议你两种方法 1:创建实现WebSocketAdapter的适配器。然后可以使用@SocketGateway和@Subsc
有可能让Websotsketgateva成为客户吗?如果没有,正确的方法是什么?我可以建议你两种方法 1:创建实现WebSocketAdapter的适配器。然后可以使用@SocketGateway和@SubscribeMessage。您可以在以下网址阅读更多内容: 2:在ApplicationBootstrap上创建一个提供程序实现。在此提供程序中,安装套接字客户端,并将事件从它激发到EventEmitter
@Injectable()
export class IoClientGatewayBootstrap implements OnApplicationBootstrap {
@Inject(IoClient)
private ioClient: IoClient;
@Inject(GLOBAL_PROVIDER.LOCAL_EVENT_EMITOR)
private localEventEmitor: LocalEventEmitorInterface;
onApplicationBootstrap() {
console.log('run');
this.connect();
}
connect = () => {
const connection = io(AppConfig.SOCKET_SERVER_URL);
connection.on('connect', () => {
console.log('ok connect');
});
connection.on('disconnect', (reason) => {
console.log('disconnect', reason);
});
// swap socket event to local event
connection.onAny((eventName: string, ...args) => {
console.log(eventName);
this.localEventEmitor.emit(eventName, args);
});
this.ioClient.setIoClient(connection);
};
}
其中LocalEventEmitter是一个服务实现EventEmitter2()
现在,您可以在任何模块中将套接字事件作为本地事件侦听
@OnEvent('test-my-event')
handleEvent(event: unknown) {
console.log(event);
}
@OnEvent('test-my-event')
handleEvent(event: unknown) {
console.log(event);
}