我想订阅一个GraphQL服务器。应用程序在NodeJS脚本中运行(即不在Web浏览器中)。
以下是我目前的做法:
const fetch = require("node-fetch").default;
const apollo = require("apollo-boost");
const ApolloClient = apollo.default;
const { gql } = require("apollo-server");
const apolloClient = new ApolloClient({
uri: "http://localhost:4000/graphql",
fetch
});
apolloClient.subscribe({
query: gql`
subscription {
startTaskRequested {
pkRobot
taskName
}
}
`,
}).subscribe({
next(x) { console.log(x) },
error(err) { console.log(`Finished with error: ${ err }`) },
complete() { console.log('Finished') }
});
生成的输出如下:
{ data: { startTaskRequested: null } }
Finished
在GraphQL服务器上,我发现对应的解析器从未被调用。
如果我使用Apollo Playground进行相同的订阅查询,则订阅将起作用,并且我会得到预期的结果: Apollo Playground
我已经把头撞了很多个小时,如果有人能指点我正确的方向,我将非常感激。