Я пытаюсь прослушивать события изменения модели в 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);
}
}