Я замечаю, что мои сообщения 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 происходила до, во время и после действия, чтобы увидеть, имеет ли это значение ... но это не так.Любые идеи?
Обновление: интересно, если я открою новую вкладку и открою эту страницу, я увижу их на исходной вкладке ... а затем при обновлении они снова отобразятся, как и раньше.