NestJS WebSocket网关:将命名空间与WS适配器一起使用

g6ll5ycj  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(200)

我正在NestJS7中实现一个WebSocket网关,如文档所示。我使用WS适配器。

const app = await NestFactory.create(ApplicationModule);
app.useWebSocketAdapter(new WsAdapter(app));

我遇到的问题是网关接受连接而不管url是什么。所以举个例子,如果我这样定义我的网关:

@WebSocketGateway(8080, {namespace: '/v3'}
export class MyGateway {}

然后,不管客户端请求的路径如何,都会触发此网关的handleConnection

ws://localhost:8080/some-other-path

不幸的是,这意味着所有客户端都连接到每个网关。名称空间选项是否仅适用于socket.io适配器?

ldxq2e6h

ldxq2e6h1#

您需要指定path选项:

@WebSocketGateway(8080, {path: '/v3'}

然后,您可以连接:

const socket = new WebSocket('ws://localhost:8080/v3');

平台ws不支持命名空间。这是socket.io的一个特性。
参考:https://github.com/nestjs/nest/issues/4968#issuecomment-772494179

相关问题