无法在所有客户端 angular/nestjs 套接字 io 中接收数据
Posted
技术标签:
【中文标题】无法在所有客户端 angular/nestjs 套接字 io 中接收数据【英文标题】:cant receive data in all clients angular / nest js scoket io 【发布时间】:2020-12-23 04:29:16 【问题描述】:我正在尝试在一个小项目中使用 socket io,所以我使用 angular 和 nestjs 但我只在发送数据的同一客户端接收数据
其他客户端不会在每条消息后重新加载他们的组件,我认为问题出在客户端,但我无法弄清楚
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`;
【问题讨论】:
【参考方案1】:更新:问题是当您将数据发送到您需要的客户端时,我使用了 client.emit 并且客户端是一个套接字。 所以我尝试使用这段代码,它运行良好
@WebSocketServer() server: Server;
@SubscribeMessage('chat')
handleMessage(client: Socket, data: any)
this.msg = data;
this.server.emit('chat', data);
return 'hello';
【讨论】:
以上是关于无法在所有客户端 angular/nestjs 套接字 io 中接收数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将所有路由重定向到nest.js中的index.html(Angular)?
nestjs 单元测试 createTestingModule 依赖注入
用友U8帐套引入时出现运行时错误“-2147217803(80040e75)”[SQL server]无法分离数据库,因为当前正在使