2016-08-17 7 views
3

Я пытаюсь использовать ActionCable в качестве транспорта для запросов GraphQL (graphql-streaming). Запросы GraphQL - это произвольные запросы на данные, поэтому вместо того, чтобы иметь один кабель для каждого запроса, я хотел бы иметь один кабель и мультиплексированные запросы по этому кабелю. Поток может быть, как это:Как остановить потоковое вещание из определенного вещания в ActionCable?

  • Подключения к ActionCable
  • Подписаться на запрос GraphQL
  • Нажимает результат запроса
  • Что-то меняется в приложении, нажмите другой результат запроса
  • Пользователь изменяет страницу , мы должны отписаться от этого запроса

Я реализую события подписки как потоки, поэтому подписка выглядит так:

stream_from(event_name) { evaluate_graphql_and_push } 

Но когда пользователь меняет страницы, я хочу, чтобы канал был подключен, но прекратил передачу из этого события.

Возможно ли это с помощью ActionCable?

ответ

0

Вы можете позвонить по методу unsubscribe на объект подписки (канал a.k.a.).

т.е.

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

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

Я не _think_ это то, что я хочу: Я хочу, чтобы оставаться подключенным к каналу, но остановить получение событий от некоторых триггеров над этим каналом. Я неправильно понял? – rmosolgo

+0

@rmosolgo В этом случае вам необходимо реализовать два метода, которые передают события и останавливают потоки в Сервере и вызывают эти методы, используя вызов 'perform' в Client. – kevinhyunilkim

+0

https://github.com/rails/actioncable-examples - хороший пример того, что вы хотите. – kevinhyunilkim