无法使用 ActionCable 和 graphql-ruby gem 理解 GraphQL 订阅

Shr*_*nan 2 ruby ruby-on-rails graphql graphql-subscriptions graphql-ruby

我正在尝试使用 ActionCable 和graphql-rubygem 来实现 GraphQL 订阅。

我从这个链接中发现,需要创建客户端需要订阅的 GraphQL 通道。通常,在ActionCable中,我们会在动作stream_from中需要通道subscribed。但是,链接中的示例指定了execute带参数的方法。这个方法什么时候会被执行呢?

此外,该文档还说明了See Apollo Client or Relay Modern客户端的使用情况。是否必须使用其中任何一种,或者我可以使用 CoffeeScript 来订阅和更新 UI 吗?

Dav*_*iaw 5

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

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

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

{
   "command":"message",
   "identifier":"{\"channel\":\"GraphqlChannel\"}",
   "data":"{ \"query\": \"subscription { newMessage { content } }\", \"variables\": null, \"action\": \"execute\" }"
}
Run Code Online (Sandbox Code Playgroud)

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

{
   "command":"subscribe",
   "identifier":"{\"channel\":\"GraphqlChannel\"}"
}
Run Code Online (Sandbox Code Playgroud)