Это происходит в простом проекте во время локальной разработки, поэтому облачная инфраструктура не является проблемой.
Это также происходит на игровой площадке приложений.
Регистрация моего модуля:
GraphQLModule.forRootAsync<ApolloDriverConfig>({
driver: ApolloDriver,
imports: [YeoConfigModule],
useFactory: (configService: YeoConfigService<AppConfig>) => {
const config: ApolloDriverConfig = {
debug: true,
subscriptions: {
'graphql-ws': true,
},
playground: true,
autoSchemaFile: './apps/event-service/schema.gql',
sortSchema: true,
context: ({ req, res }) => ({ req, res }),
};
const origins = configService.get('CORS_ORIGINS')();
config.cors = { origin: origins, credentials: true };
// config.path = '/apis/event-service/graphql';
return config;
},
inject: [YeoConfigService],
Мой запуск приложения:
async function bootstrap(): Promise<void> {
const app = await getApp();
await app.listen(process.env.PORT ?? 3600);
}
bootstrap();
Мои версии:
"graphql-ws": "5.11.2",
"graphql-redis-subscriptions": "2.5.0"
"@apollo/gateway": "2.1.3",
"@nestjs/graphql": "10.1.3",
"graphql": "16.5.0",
Результат:
{
"error": "Could not connect to websocket endpoint ws://localhost:3600/graphql. Please check if the endpoint url is correct."
}
Любые идеи, почему это не работает должным образом? Я читал документацию по nestjs по адресу https://docs.nestjs.com/graphql/subscriptions, но ничего не могу найти о дополнительных настройках, кроме добавления
subscriptions: {
'graphql-ws': true,
},
при регистрации модуля graphql.


Для всех, кто наткнулся на это, я начал использовать altair, который позволяет мне указать конечную точку ws, а также тип соединения, среди которых есть опция graphql-ws.
Так что я пошел с ним.
Если кто-нибудь знает, как добиться этого, используя игровую площадку, упомянутую в исходном ответе, с удовольствием отметим этот ответ как правильный, а не мой.