订阅不会在nodejs / vanilla中使用Apollo-client触发

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (12)

我正在使用Apollo graphql框架,似乎正在启动并运行订阅。但我无法从订阅中获取任何事件,而Apollo客户端的文档很少涉及纯nodejs和vanilla javascript。

该项目正在为节点红色制作一些节点,这将使用供应商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上的模拟账户一起使用。没有返回错误,订阅对象(子)处于“就绪”状态。

提问于
用户回答回答于

我的建议:分而治之

我将从apollo客户端的标准反应应用程序开始。您可以使用<Query/>组件来简化。在这一步中,最重要的是熟悉身份验证

下一步:直接使用客户端,无需使用组件。仍在使用反应使用ApolloConsumer - 您的组件可以访问client道具。您可以使用client.query()来自componentDidMount()console.logsetState)的调用。

如果您更喜欢vanilla,那么本教程可能更合适。

下一步将使用订阅。再次,从<Subscription/>组件开始。之后,您应该已正确配置客户端(传输,身份验证)。

在这一步你开始移动到节点ENV,FE寻找类似的例子与过去获得的知识相结合。

扫码关注云+社区

领取腾讯云代金券