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