NestJS Websocket Gateway: использование пространств имен с адаптером WS

Я работаю над реализацией шлюза Websocket в NestJS 7, как показано в документации. Я использую адаптер 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?

1 ответ

Вам необходимо указать 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

Другие вопросы по тегам