Излучение события websocket от контроллера или службы NestJS - PullRequest
0 голосов
/ 21 июня 2019

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

}

...