Apollostack 阿波罗订阅没有';我似乎没有被要求去做突变

Apollostack 阿波罗订阅没有';我似乎没有被要求去做突变,apollostack,apollo-server,graphql-subscriptions,Apollostack,Apollo Server,Graphql Subscriptions,我是阿波罗的新手,所以我决定用一种稍微不同的方式来做。我的代码可以是 我遇到的问题是,当我调用MutationcreateTask()时,订阅似乎没有被调用。schema.graphql中将突变和订阅定义为: type Mutation { createTask( text: String! ): Task } type Subscription { taskCreated: Task } 并在resolvers.js中显示为: Mutation: { createT

我是阿波罗的新手,所以我决定用一种稍微不同的方式来做。我的代码可以是

我遇到的问题是,当我调用Mutation
createTask()
时,订阅似乎没有被调用。schema.graphql中将突变和订阅定义为:

type Mutation {
  createTask(
    text: String!
  ): Task
}

type Subscription {
  taskCreated: Task
}
并在resolvers.js中显示为:

Mutation: {
  createTask(_, { text }) {
    const task = { id: nextTaskId(), text, isComplete: false };
    tasks.push(task);
    pubsub.publish('taskCreated', task);
    return task;
  },
},
Subscription: {
  taskCreated(task) {
    console.log(`Subscript called for new task ID ${task.id}`);
    return task;
  },
},
我希望每次在客户端运行以下操作时,服务器上都会出现一个console.log:

mutation Mutation($text: String!) {
  createTask(text:$text) {
    id
    text
    isComplete
  }
}

但什么也没发生。我缺少什么?

当实际存在对GraphQL订阅的订阅时,将调用订阅解析程序函数

由于您没有添加使用
subscriptions-transport-ws
SubscriptionClient
订阅websocket的客户端,因此订阅将不起作用

您可以做的是将订阅频道添加到
SubscriptionManager
setupFunctions
,并在其中获得
publish.publish
函数提供的值

可能是这样的:

。。。
const WS_PORT=8080;
const websocketServer=createServer((请求、响应)=>{
书面答复(404);
response.end();
});
侦听(WS_端口,()=>console.log(//eslint禁用行无控制台
`Websocket服务器现在正在上运行http://localhost:${WS_PORT}`
));
const subscriptionManager=新的subscriptionManager({
schema:executableSchema,
pubsub:pubsub,
setupFunctions:testRunChanged:(选项,参数)=>{
返回{
创建的任务:{
过滤器:(任务)=>{
console.log(task);//调用pubsub时应该是log
返回true;
}
},
};
},
,
});
subscriptionServer=新的subscriptionServer({
订阅管理器:订阅管理器
}, {
服务器:websocketServer,
路径:“/”,
});

碰巧发现了问题所在?我希望我能找到。也没有时间去调查。有同样的问题:c