Я пытаюсь настроить проект гнезда. 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.