Создаю 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);
}
}