Серверная трансляция ActionCable принимается при выходе со страницы - PullRequest
0 голосов
/ 19 января 2019

Я замечаю, что мои сообщения ActionCable появляются только тогда, когда я ухожу со страницы, на которой я должен их видеть ... Вот тестовый контроллер:

class TestController < ApplicationController

  before_action :run_before_action
  after_action :run_after_action

  def index
    ActionCable.server.broadcast("test_channel", action: 'index')
  end

  private

  def run_before_action
    ActionCable.server.broadcast("test_channel", action: 'before_action')
  end

  def run_after_action
    ActionCable.server.broadcast("test_channel", action: 'after_action')
  end

end

Вот мой канал:

class TestChannel < ApplicationCable::Channel
  def subscribed
    stream_from "test_channel"
  end

  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end
end

И, наконец, JS для консоли отключает соединения и данные:

App.notifications = App.cable.subscriptions.create("TestChannel", {
  connected: function () {
      // Called when the subscription is ready for use on the server
      console.log('connected');
  },
  disconnected: function () {
      // Called when the subscription has been terminated by the server
      console.log('disconnected');
  },
  received: function (data) {
    // Called when there's incoming data on the websocket for this channel
    console.log('received');
    console.log(data);
    $('body').append(data.action);
  }
});

Я использую Redis для адаптера в разработке, и я удалил Turbolinks.

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

Почему это происходит в отпуске?Я даже сделал так, чтобы трансляция ActionCable происходила до, во время и после действия, чтобы увидеть, имеет ли это значение ... но это не так.Любые идеи?

Обновление: интересно, если я открою новую вкладку и открою эту страницу, я увижу их на исходной вкладке ... а затем при обновлении они снова отобразятся, как и раньше.

...