This is happening on a simple project during local development, so cloud infrastructure isn't an issue.
This is also happening in the application playground.
My module registration:
    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],
My app startup:
async function bootstrap(): Promise<void> {
  const app = await getApp();
  await app.listen(process.env.PORT ?? 3600);
}
bootstrap();
My versions:
    "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",
Result:
{
  "error": "Could not connect to websocket endpoint ws://localhost:3600/graphql. Please check if the endpoint url is correct."
}
Any ideas why this isn't working as expected? I've been reading the nestjs docs up at https://docs.nestjs.com/graphql/subscriptions but there's nothing that I can find about extra setup required other than adding
          subscriptions: {
            'graphql-ws': true,
          },
when registering the graphql module.