如何在ActionCable中停止来自特定广播的流媒体?

时间:2016-08-17 15:39:26

标签: ruby-on-rails ruby-on-rails-5 actioncable

我正在尝试使用ActionCable作为GraphQL查询的传输(graphql-streaming)。 GraphQL查询是对数据的任意请求,因此我不想在每个查询中使用一条电缆,而是希望通过该电缆进行一次电缆和多路查询。流程可能是这样的:

  • 连接到ActionCable
  • 订阅GraphQL查询
  • 推送查询结果
  • 应用中的某些更改,推送另一个查询结果
  • 用户更改页面,我们应该取消订阅该查询

我正在将订阅事件实现为流,因此订阅如下所示:

stream_from(event_name) { evaluate_graphql_and_push } 

但是当用户更改页面时,我希望保持频道连接但停止该事件的流式传输。

ActionCable可以实现吗?

1 个答案:

答案 0 :(得分:1)

您可以在订阅(a.k.a.频道)对象上调用unsubscribe方法。

即,

channel = App.cable.subscriptions.create "ChannelName"

onPageChange = function() {
    channel.unsubscribe()
}