Невозможно заставить работать подписки graphql - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь настроить проект гнезда. js, который использует подписки. но независимо от того, что я делаю, я не могу заставить его работать. следующий код настроен в соответствии с документацией и примерами из Nest. js

App.module.ts

...
@Module({
  imports: [
    ...
    GraphQLModule.forRoot({
      autoSchemaFile: 'schema.gql',
      context({ req }) {
        // ...
      },
      formatError(err) {
        //...
      },
      installSubscriptionHandlers: true,
    }),
    CommonModule,
    BankIDModule,
    UsersModule,
    AuthenticationModule,
  ],
  controllers: [AppController],
  providers: [AppService, BankIDService],
})
export class AppModule {}

authentication.resolver.ts

import {
  Resolver,
  Subscription,
  Query,
} from '@nestjs/graphql';
import { PubSub } from 'apollo-server-express';
import { BankIDCollectStatus } from './models/bankidCollectStatus';
import { CollectStatus } from '../bankid/interfaces/bankid.interfaces';

const pubSub = new PubSub();

@Resolver('Authentication')
export class AuthenticationResolver {

  @Query((returns) => BankIDCollectStatus)
  test() {
    const bankidCollect: BankIDCollectStatus = {
      status: CollectStatus.pending,
    };
    pubSub.publish('bankidCollect', { bankidCollect });
    return result;
  }

  @Subscription((returns) => BankIDCollectStatus)
  bankidCollect() {
    return pubSub.asyncIterator('bankidCollect');
  }
}


Когда я пытаюсь подключиться к подписке через игровую площадку или через собственное приложение реакции, я получаю сообщение об ошибке Cannot read property 'connection' of undefined. Если я добавлю следующее в файл App.module.ts, я не получу сообщение об ошибке, но я не получу ни одного сообщения, оно просто постоянно загружается.

      ...
      installSubscriptionHandlers: true,
      subscriptions: {
        path: 'subscriptions',
      },
      ...

У меня есть пробовал переключаться между graphql-subscriptions и apollo-server-express. Единственное изменение, по-видимому, заключается в том, что apollo-server-express требует, чтобы в tsconfig было включено esModuleInterop.

Я пробовал это как в гнезде 6, так и сейчас, в гнезде 7.

...