【问题标题】:cant receive data in all clients angular / nest js scoket io无法在所有客户端 angular/nestjs 套接字 io 中接收数据
【发布时间】:2020-12-23 04:29:16
【问题描述】:

我正在尝试在一个小项目中使用 socket io,所以我使用 angularnestjs 但我只在发送数据的同一客户端接收数据

其他客户端不会在每条消息后重新加载他们的组件,我认为问题出在客户端,但我无法弄清楚

nestjs

implements OnGatewayDisconnect, OnGatewayConnection {
  private logger: Logger = new Logger('AppGateway');
  constructor() {}
  handleConnection(client: Socket) {
    this.logger.log(`client Connected ${client.id}`);
  }
  handleDisconnect(client: Socket) {
    this.logger.log(`client disconnected ${client.id}`);
  }
  @SubscribeMessage('chat')
  handleMessage(client: Socket, data: any) {
    client.emit('chat', data);
  }
  @SubscribeMessage('typing')
  handleMessage2(client: Socket, data: any) {
    client.emit('typing', data);
  }
}

角度服务

export class MessageService {
  socket: any;

  constructor() {
    this.socket = io.connect('http://localhost:3000');
  }

  listen(eventname: string): Observable<any> {
    return new Observable((subscriber) => {
      this.socket.on(eventname, (data) => {
        subscriber.next(data);
      });
    });
  }

  emit(eventname: string, data: any) {
    this.socket.emit(eventname, data);
  }
}

角度组件.ts

 ngOnInit(): void {
   
    this.messageService
      .listen('typing')
      .subscribe((data) => this.updateFeedback(data));
    this.messageService
      .listen('chat')
      .subscribe((data) => this.updateMessage(data));
   
  }
 updateMessage(data: any) {
    this.feedback = '';
    if (!!!data) return;
    console.log(`${data.handle} : ${data.message}`);
    this.output.push(data);
  }

  updateFeedback(data: any) {
    this.feedback = `${data} is typing a message`;
  }

【问题讨论】:

    标签: angular websocket socket.io nestjs


    【解决方案1】:

    更新:问题是当您将数据发送到您需要的客户端时,我使用了 client.emit 并且客户端是一个套接字。 所以我尝试使用这段代码,它运行良好

    @WebSocketServer() server: Server;
      @SubscribeMessage('chat')
      handleMessage(client: Socket, data: any) {
        this.msg = data;
        this.server.emit('chat', data);
        return 'hello';
      }
    

    【讨论】:

      猜你喜欢
      • 2014-08-27
      • 2022-09-28
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多