【发布时间】:2019-05-17 10:45:30
【问题描述】:
在客户端使用 apollo-link,在服务器上使用来自 apollo-server-express 的 PubSub。在与 GraphQL API 对话的 mocha 测试中得到奇怪的结果:
摩卡:
import { execute, makePromise } from 'apollo-link';
const uri = 'http://localhost:3001/graphql';
const link = new HttpLink({ uri, fetch });
const subscribe = (query, handlers) => {
const operation = {
query: gql`${query}`,
};
return execute(link, operation).subscribe(handlers);
};
const handlers = {
next: (data) => {
console.log(`received data: ${Date.now()}, ${JSON.stringify(data, null, 2)}`);
},
error: error => console.log(`received error ${error}`),
complete: () => console.log('complete'),
};
it('subscribe', async () => {
const query = `subscription {
info
}`;
subscribe(query, handlers);
});
服务器:
try {
console.log('subscription =>| ', Date.now(), '|', line);
worker.pubsub.publish('infoTopic', { info: line });
} catch (e) {
console.error(e);
}
这是我看到的(来自测试):
收到的数据:1545013826838,{“错误”:[ { "message": "不能为不可为空的字段 Subscription.info 返回 null。",...
(来自服务器):
订阅 =>| 1545013826887 |信息深度 1 seldepth 1 ...
订阅者在 826838 接收, 但发布者在 826887
发送什么鬼?
【问题讨论】: