根据nestjs文档,我已经实现了websockets网关,并在AppModule中提供了它。服务器正常启动,我可以通过http成功地为静态资产提供服务。但是我根本无法让websockets运行,ws-server在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"

也许你直接看到了问题。谢谢你的帮助,干杯!

最佳答案

在您的项目中,nest的主要版本v5和v6是混合的。不同的主要版本不能保证正确的互操作。将所有依赖项更新到NestV6;您可以查看migration guide以了解有关更新的其他信息。
运行$ npm i @nestjs/core@latest @nestjs/common@latest
安装新的依赖项时,注意NPM中的对等依赖警告,如:

npm WARN @nestjs/[email protected] requires a peer of @nestjs/common@^6.0.0 but none is installed.
You must install peer dependencies yourself.

关于javascript - NestJS WebSocketGateway不初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55665343/

10-12 02:42