我试图通过订户收听TypeORM中的模型更改事件,并在每次插入新事件时广播一次事件。外部客户端接收事件时,网关的@SubscribeMessage()
方法未接收到事件,这表明发送方未获取事件。但是,根据socket.io,of('namespace').emit('event')
应该被接收到包括发送者在内的任何客户端。
网关没有任何问题地注入到订户服务,并且当我尝试使用网关时,网关的服务器似乎已准备就绪,但是未发出任何事件。
在NestJS 6.3.1上运行,我还尝试过从控制器发出事件,但没有结果。
@WebSocketGateway({ namespace: '/posts' })
export class PostGateway {
@WebSocketServer()
server: Namespace;
@SubscribeMessage('create')
handleMessage(client: Socket, payload: Post): void {
console.log('handling', payload);
}
}
@Injectable()
export class PostSubscriber implements EntitySubscriberInterface<Post> {
private socket: Namespace;
constructor(
@InjectConnection() readonly connection: Connection,
private readonly gateway: PostGateway,
) {
connection.subscribers.push(this);
this.socket = gateway.server;
}
listenTo() {
return Measurement;
}
afterInsert(event: InsertEvent<Post>): void {
this.gateway.server.emit('create', event.entity);
}
}