无法了解将ActionCable与graphql-ruby gem一起使用时的GraphQL订阅

时间:2018-12-23 16:12:04

标签: ruby-on-rails ruby graphql graphql-subscriptions graphql-ruby

我正在尝试使用带有graphql-ruby gem的ActionCable来实现GraphQL订阅。

我从此enter image description here中发现,需要创建GraphQL通道,客户端需要订阅该通道。通常,在ActionCable中,我们将在stream_from操作中subscribed所需的频道。但是,链接中的示例指定了带有参数的execute方法。该方法何时执行?

此外,link声明See Apollo Client or Relay Modern供客户端使用。是必须使用其中之一吗?还是可以使用coffeescript来订阅和更新UI?

1 个答案:

答案 0 :(得分:1)

对于不确定理解GraphQL如何与ActionCable配合使用的任何人,不确定是否已经解决了问题。我已经建立了一个示例存储库,并将尝试更新文档以使其更好。

https://github.com/bidluo/GraphQL-ActionCableSubscriptions

要回答您的问题,在发送消息时,execute就像其他任何ActionCable动作一样,要调用它,您将执行以下操作,其中数据包含所有内容,而查询实际上是GraphQL的唯一位。

{
   "command":"message",
   "identifier":"{\"channel\":\"GraphqlChannel\"}",
   "data":"{ \"query\": \"subscription { newMessage { content } }\", \"variables\": null, \"action\": \"execute\" }"
}

但是您需要确保先订阅频道:

{
   "command":"subscribe",
   "identifier":"{\"channel\":\"GraphqlChannel\"}"
}