从NestJS控制器或服务发出websocket事件

从NestJS控制器或服务发出websocket事件,websocket,socket.io,nestjs,Websocket,Socket.io,Nestjs,我试图通过订阅者收听TypeForm中的模型更改事件,并在每次插入新事件时广播一个事件。当外部客户端接收事件时,网关的@SubscribeMessage()方法没有接收到它,这表明发送方没有获取事件。但是,根据,应该将('namespace').emit('event')的接收给任何客户端,包括发送方 网关被注入到订户服务中,没有任何问题,当我尝试使用它时,网关的服务器似乎已准备就绪,但没有发出任何事件 在NestJS 6.3.1上运行时,我还尝试从控制器发出事件,但没有结果 @WebSocke

我试图通过订阅者收听TypeForm中的模型更改事件,并在每次插入新事件时广播一个事件。当外部客户端接收事件时,网关的
@SubscribeMessage()
方法没有接收到它,这表明发送方没有获取事件。但是,根据,应该将('namespace').emit('event')的
接收给任何客户端,包括发送方

网关被注入到订户服务中,没有任何问题,当我尝试使用它时,网关的服务器似乎已准备就绪,但没有发出任何事件

在NestJS 6.3.1上运行时,我还尝试从控制器发出事件,但没有结果

@WebSocketGateway({命名空间:'/posts'})
导出类PostGateway{
@WebSocketServer()
服务器:名称空间;
@SubscribeMessage('create')
handleMessage(客户端:套接字,有效负载:Post):void{
console.log(“处理”,有效载荷);
}
}
@Injectable()
导出类PostSubscriber实现EntitySubscriberInterface{
私有套接字:名称空间;
建造师(
@InjectConnection()只读连接:连接,
专用只读网关:PostGateway,
) {
connection.subscribers.push(this);
this.socket=gateway.server;
}
listenTo(){
回波测量;
}
afterInsert(事件:InsertEvent):无效{
this.gateway.server.emit('create',event.entity);
}
}

我不确定您的代码有什么问题。不过,我发现websockets有助于使用chrome中的“网络”选项卡,您可以通过查看页面来访问该选项卡。如果选择“网络”选项卡,然后选择WS作为通信类型,它将显示所有传入和传出的消息。希望这能有所帮助。我最终注入了服务并使用RxJS主题来接收此类事件。由于这是服务之间的通信,因此无法轻松检查,但socket.io提供了用于相同目的的调试字符串。