问题在于GraphQL订阅请求在GraphQL游乐场中有效: Google DevTools console from GraphQL playground,但是当我使用我的应用程序时:
const subscriptionClient = new SubscriptionClient('wss://url/subscriptions', {});
...
const urqlClient = createClient({
url: '/graphql',
exchanges: [
...
subscriptionExchange({
forwardSubscription: operation => subscriptionClient.request(operation),
}),
...
],
});
它确实与网络套接字建立了连接(即我没有收到404
),但实际上并没有开始发送数据:
Google DevTools console from my app
即,不发送开头为
的消息id: 1, type: start...
这基本上意味着不会调用.publish()
方法:
setInterval(() => {
fetch(`${dummy_url}/api/me`, {
method: 'GET',
headers: {
cookie: context.cookie,
},
}).then(res => {
res.json().then(json => {
context.pubsub.publish(channel, {
get_cool_endpoint: json,
});
});
});
}, PORT);
我应该怎么看才能找到问题?
注意:如果我使用以下命令(即在本地运行),此设置也可以使用:
const subscriptionClient = new SubscriptionClient('ws://localhost:${PORT}/subscriptions', {});