【发布时间】: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`;
}
【问题讨论】:
标签: angular websocket socket.io nestjs