【发布时间】:2019-10-17 20:14:15
【问题描述】:
我正在使用 Apollo graphql 框架,似乎可以启动并运行订阅。但是我无法从订阅中触发任何事件,而且围绕 Apollo 客户端的文档很少涉及纯 nodejs 和 vanilla javascript。
该项目正在为 node-red 制作几个节点,它将使用供应商的 graphql 接口来获取有关电力消耗和电价的不同数据。为此,我还需要使用订阅。对 graphql 很陌生,被推荐使用 apollo 框架。
result = tibber.getSubscription('subscription{ liveMeasurement(homeId:"c70dcbe5-4485-4821-933d-a8a86452737b"){timestamp power maxPower accumulatedConsumption accumulatedCost}}');
// returns an Observable from the apollo client subscribe()
// client.subscribe({ query: gql`${query}` });
let sub = result.subscribe({
next (data) { console.log(data); },
error (err) { console.log(err); }
});
本以为 console.log 会在几秒钟后触发一些数据,因为此订阅适用于供应商 api explorer 上的演示帐户。 没有返回错误,订阅对象(子)处于“就绪”状态。
【问题讨论】:
-
subsription 会将更改从服务器“传递”到客户端,好吧,假设它可以工作(完成了一半)......但是什么会通知服务器某事发生了变化?缓存/轮询/发布订阅... fetch 是一次性事件,订阅需要蜜蜂'喂'
-
不确定我明白了...这是服务器上定义的订阅,因此设置为在更改和/或间隔(不是我的服务器)时中继信息。我有一个 websocket 链接,然后应该保持打开状态,并观察查询的变化(网络或缓存)。你的意思是我还需要 apollo 客户端来使它工作吗?
-
更多的是关于阿波罗服务器 - 你有什么触发/发送事件到这个(可能工作的)订阅(c-s)“频道”吗?
-
不是我的服务器,一个叫 Tibber 的供应商。但是,是的,它是他们架构中的有效订阅,使用他们的 API 资源管理器(数据正在定期流动)和我用于从我的客户进行测试的相同演示帐户令牌进行验证。
标签: node.js graphql node-red apollo-client