@Fannasankh

Почему не подключается к socket.io через Nest.js?

Создаю socket.io сервер как в документации https://docs.nestjs.com/websockets/gateways
Даже пробовал запустить официальный пример, опубликованный на github https://github.com/nestjs/nest/tree/master/sample/...

Не получается подключиться, не срабатывает событие socket.on('connect'), хотя на сервере по логам видно, что клиент подключается и сразу отключается

Если поднимать сервер socket.io без nest, на чистом express, то всё работает.

Код клиентской части:

function connect():Promise<Socket> {
  

  const socket = io('http://localhost:4455', {
    transports: ['websocket'],

  });

  console.log('connect init');
  return new Promise((resolve) => {
    socket.on('connect', () => {
      resolve(socket);
      console.log('on connect');
    });
  });
}


На сервере код по документации

@WebSocketGateway({ transports: ['websocket'] })
export class SocketioGateway
  implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
  @WebSocketServer()
  ioServer: Server;

  private logger: Logger = new Logger('SocketIO');

  afterInit(server: Server) {
    this.logger.log('SocketIO init');
  }

  handleDisconnect(client: Socket) {
    this.logger.log(`Client disconnected: ${client.id}`);
  }

  handleConnection(client: Socket, ...args: any[]) {
    this.logger.log(`Client connected: ${client.id}`);
    return true;
  }

  emit(event: string) {
    this.ioServer.emit(`${event}`, true);
  }
}
  • Вопрос задан
  • 27 просмотров
Решения вопроса 1
@Fannasankh Автор вопроса
Nest использует socket.io версии 2, который не совместим с клиентом версии 3, вопрос решен
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы