NestJS WebSocketGateway无法初始化

时间:2019-04-13 12:18:43

标签: javascript node.js typescript websocket nestjs

根据NestJS文档,我已经实现了websockets网关并将其提供在AppModule内部。服务器正常启动,我可以通过http成功提供静态资产。但是我根本无法运行websocket,在ws://localhost:3333上没有ws服务器,并且根本没有执行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 个答案:

答案 0 :(得分:1)

在您的项目中,嵌套的主要版本v5和v6混合在一起。不保证不同的主要版本可以正常互操作。将所有依赖项更新为Nest v6;您可以查看migration guide以获得有关此更新的其他信息。

运行$ 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.