我正在尝试在 NestJS 中创建一个响应多个路径的 websockets 网关。这是一项要求,因为我正在尝试构建的内容将替换现有系统。我使用 WsAdapter 作为底层适配器。
websockets 路径可以用slugs(例如/ws/:key
)或正则表达式来表示。然而,WebSocketGateway 装饰器只接受单个字符串并且不识别这样的 slug。
import { OnGatewayInit, SubscribeMessage, WebSocketGateway } from '@nestjs/websockets';
import { Logger } from '@nestjs/common';
@WebSocketGateway({path: '/ws/:key'}) // FIXME: ":key" should be treated as a slug here
export class ManagementGateway implements OnGatewayInit {
private readonly logger = new Logger(ManagementGateway.name, false);
afterInit(server: any): any {
this.logger.debug('Websockets gateway initialized');
}
@SubscribeMessage('ctl')
handle(client: any, data: unknown): void {
this.logger.debug('ctl');
// TODO
}
}
我要替换的以前的旧实现使用ws
,express
和基于正则表达式的路径匹配来执行此操作。
任何提示或指针将不胜感激。