永远不会调用Apollo服务器订阅订阅方法

时间:2020-07-10 13:23:16

标签: graphql apollo graphql-js express-graphql graphql-subscriptions

我有一个现有的Express ApolloServer。我添加了订阅。我可以看到从Playground触发订阅时,称为resolve方法。但是,永远不会调用subscribe方法


const { PubSub, withFilter } = require ('apollo-server');
const pubsub = new PubSub();
const SOMETHING_CHANGED_TOPIC = 'something_changed';

const mySubscription = {

  Subscription: {
    somethingChanged: {
      resolve: root => {
        console.log('subscription server resolve', { root })
        return root
      },
      subscribe: () => {
        console.log('I AM HERE IN SUBSCRIPTION', pubsub.asyncIterator(SOMETHING_CHANGED_TOPIC))
        return pubsub.asyncIterator(SOMETHING_CHANGED_TOPIC)
      }
    }
  }
};

module.exports = { mySubscription}

尽管root尚未定义,但我可以看到console.log('subscription server resolve', { root })正在打印。但是未执行订阅中类似的console.log('````')

1 个答案:

答案 0 :(得分:0)

您需要在某个地方(通常在您的一个解析器中)调用pubsub.publish来触发订阅。

https://www.apollographql.com/docs/apollo-server/data/subscriptions/#subscriptions-example