NestJS WebSocketGateway не инициализируется - PullRequest
2 голосов
/ 13 апреля 2019

Согласно документам NestJS, я реализовал шлюз websockets и предоставил его внутри AppModule.Сервер запускается правильно, и я могу успешно обслуживать статические ресурсы через http.Но я не могу запустить websockets вообще, сервер ws недоступен на ws://localhost:3333, а функция afterInit вообще не выполняется.Даже когда я определяю @SubscribeMessage.

Шлюз реализован как

@WebSocketGateway()
export class SocketGateway implements OnGatewayInit {
  afterInit() {
    console.log('Gateway initialized');
  }
}

Модуль AppModule правильно обеспечивает шлюз

@Module({
  providers: [SocketGateway]
})
export class AppModule {}

И этореализация начальной загрузки

export async function bootstrap() {
  let app = await NestFactory.create(AppModule);

  await app.listen(process.env.port || 3333, () => {
    console.log(`Listening at http://localhost:${port}`);
  });
}

bootstrap();

Мои зависимости

"socket.io-client": "^2.2.0",
"@nestjs/common": "5.5.0",
"@nestjs/core": "5.5.0",
"@nestjs/platform-socket.io": "^6.1.0",
"@nestjs/websockets": "^6.1.0"

Возможно, вы видите проблему напрямую.Спасибо за вашу помощь, ура!

1 Ответ

1 голос
/ 13 апреля 2019

В вашем проекте основные версии nest v5 и v6 смешаны.Различные основные версии не гарантируют правильное взаимодействие.Обновите все ваши зависимости до nest v6;Вы можете взглянуть на руководство по миграции для получения дополнительной информации об обновлении.

Запуск $ npm i @nestjs/core@latest @nestjs/common@latest


При установке новых зависимостей следите заПредупреждения о зависимости от сверстников из npm, например:

npm WARN @nestjs/websockets@6.1.0 requires a peer of @nestjs/common@^6.0.0 but none is installed.
You must install peer dependencies yourself.
...