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

时间:2019-06-21 15:12:35

标签: websocket socket.io nestjs

我试图通过订户收听TypeORM中的模型更改事件,并在每次插入新事件时广播一次事件。外部客户端接收事件时,网关的@SubscribeMessage()方法未接收到事件,这表明发送方未获取事件。但是,根据socket.ioof('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);
  }

}

0 个答案:

没有答案