websocket - 如何从 @EventPattern 访问 Websocket
问题描述
我有一个events.gateway.ts控制所有客户端和服务器事件,但是当我这样做时
this.server.emit('client.events', data)
,@EventPattern('gw-event:playback.state')
我有发射null。请看下面的代码:
import { Logger, Inject, Controller } from '@nestjs/common';
import { SubscribeMessage,
WebSocketGateway,
MessageBody,
WebSocketServer,
OnGatewayInit,
OnGatewayConnection,
OnGatewayDisconnect} from '@nestjs/websockets';
import { Socket, Server } from 'socket.io';
import { ClientProxy, EventPattern} from '@nestjs/microservices';
@Controller('gateway')
@WebSocketGateway()
export class EventsGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect{
@WebSocketServer() server: Server;
private logger: Logger = new Logger('EventsGateway');
constructor(@Inject('EVENTS_SERVICE') private readonly client: ClientProxy) {
}
afterInit(server: Server) {
this.server = server;
this.logger.log('Init', EventsGateway.name);
}// OnGatewayInit
handleDisconnect(client: Socket) {
this.logger.log(`Client disconnected: ${client.id}`, EventsGateway.name);
}// OnGatewayDisconnect
handleConnection(client: Socket, ...args: any[]) {
this.logger.log(`Client connected: ${client.id}`, EventsGateway.name);
this.server.emit('client.events', 'Welcome client:' + client.id);
}// OnGatewayConnection
@SubscribeMessage('client.events')
handleEvent(@MessageBody() data: string): any {
return { event: 'client.events', 'data': data + '__from Server'};
}
@EventPattern('gw-event:playback.state')
async handlePlaybackState(data: Record<string, unknown>) {
this.server.emit('client.events', data); //<= Error emit is null
}
}
有什么建议吗?谢谢。
解决方案
解决了在如何从控制器或其他组件/服务访问 websocket 中应用建议的方法?通过拉罗德
推荐阅读
- python - 一对多自引用关系 SQLAlchemy
- python - discord.py - AttributeError:模块'discord'没有属性'PCMVolumeTransformer'
- spring-boot - Spring Boot中的事务同步无法正常工作
- android - MVP模型属于表现层还是领域层?
- swift - 如何缩放暂停的 ARFaceTrackingSession
- php - 收集另一个 PHP 脚本发送的文件附件,并将它们输出为 ZIP 文件夹
- java - 枚举数组到字符串数组
- kubernetes - istio - 跟踪出口流量
- javascript - 无法读取未定义状态的属性
- html - 在 contenteditable 中使文本不可见