Я изучаю Pusher в приложении Ruby on Rails и настраиваю его, когда пользователь нажимает кнопку, отправляет форму для обновления объекта, затем запускает событие Pusher, которое отправляет предупреждение и изменяет цвет фона для всех окон, прослушивающих этот канал. .
У меня есть сайт, работающий на моем локальном сервере localhost:3000 и на Heroku. На локальном хосте: 3000 это работает как шарм — когда у меня открыты окна, на которых работает сайт как локально, так и на Heroku, и я нажимаю кнопку на локальном сайте, все окна получают предупреждение и обновляют цвет фона.
ОДНАКО, когда я пытаюсь сделать то же самое на Heroku, ни одно из окон не получает предупреждение и не меняет цвет. Я просмотрел консоль отладки на Pusher, и она показывает, что соединение установлено, но не показывает отправленный запрос API:
Subscribed 35329.28868505 Channel: client-open 23:52:33
Connection 35329.28868505 Origin: http://testing-pusher.herokuapp.com 23:52:33
Disconnection 35303.28886132 Channels: client-open, Lifetime: 107.70291038s 23:52:32
Согласно справочной странице Heroku, я установил pusher gem и дополнение.
Вот мой триггер, который работает в моем switches#update
:
@switch.update(color: params[:switch][:color])
Pusher['client-open'].trigger('new_message', {:color => @switch.color})
Слушатель/привязка, которая работает на application.html.erb:
<script type="text/javascript" charset="utf-8">
$(function() {
Pusher.log = function(message) {
if (window.console && window.console.log) {
window.console.log(message);
}
};
var pusher = new Pusher('my_pusher_key'); // This has my actual key in it
var channel = pusher.subscribe('client-open');
channel.bind('new_message', function(data) {
alert("I'm going to change your background color to #"+data.color);
$("#appended").append("I'm going to change your background color to "+data.color);
$(".color").css('background-color', '#'+data.color);
});
// Some useful Pusher debug msgs
pusher.connection.bind('connecting', function() {
$('div#status').text('Connecting to Pusher...');
});
pusher.connection.bind('connected', function() {
$('div#status').text('Connected to Pusher!');
});
pusher.connection.bind('failed', function() {
$('div#status').text('Connection to Pusher failed :(');
});
channel.bind('subscription_error', function(status) {
$('div#status').text('Pusher subscription_error');
});
});
</script>
У меня есть эти два скрипта в заголовке одного и того же файла:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="http://js.pusherapp.com/2.0/pusher.min.js"></script>
Как я могу заставить Pusher правильно срабатывать на Heroku?
РЕДАКТИРОВАТЬ: Вот журналы Heroku. Никаких ошибок, которые я могу сказать:
2014-05-07T18:40:46.291870+00:00 heroku[router]: at=info method=POST path=/switches/1 host=testing-pusher.herokuapp.com request_id=f3f9e17c-086b-4639-88ba-4a406828c4e7 fwd="24.20.217.80" dyno=web.1 connect=2ms service=72ms status=302 bytes=942
2014-05-07T18:40:46.224270+00:00 app[web.1]: Started PATCH "/switches/1" for 24.20.217.80 at 2014-05-07 18:40:46 +0000
2014-05-07T18:40:46.224278+00:00 app[web.1]: Started PATCH "/switches/1" for 24.20.217.80 at 2014-05-07 18:40:46 +0000
2014-05-07T18:40:46.227649+00:00 app[web.1]: Processing by SwitchesController#update as HTML
2014-05-07T18:40:46.415613+00:00 app[web.1]: Started GET "/" for 24.20.217.80 at 2014-05-07 18:40:46 +0000
2014-05-07T18:40:46.455745+00:00 app[web.1]: Completed 200 OK in 28ms (Views: 19.0ms | ActiveRecord: 1.4ms)
2014-05-07T18:40:46.230175+00:00 app[web.1]: Processing by SwitchesController#update as HTML
2014-05-07T18:40:46.424400+00:00 app[web.1]: Processing by SwitchesController#show as HTML
2014-05-07T18:40:46.451080+00:00 app[web.1]: Rendered switches/_form.html.haml (7.4ms)
2014-05-07T18:40:46.230262+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"nqhkV37GG6ym+pM7j+Bdxh3aBltTLfNpPa6cnE6b92U=", "switch"=>{"color"=>"c4b6c2"}, "commit"=>"push me", "id"=>"1"}
2014-05-07T18:40:46.230298+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"nqhkV37GG6ym+pM7j+Bdxh3aBltTLfNpPa6cnE6b92U=", "switch"=>{"color"=>"c4b6c2"}, "commit"=>"push me", "id"=>"1"}
2014-05-07T18:40:46.287569+00:00 app[web.1]: Redirected to http://testing-pusher.herokuapp.com/
2014-05-07T18:40:46.287617+00:00 app[web.1]: Redirected to http://testing-pusher.herokuapp.com/
2014-05-07T18:40:46.287866+00:00 app[web.1]: Completed 302 Found in 57ms (ActiveRecord: 8.2ms)
2014-05-07T18:40:46.287875+00:00 app[web.1]: Completed 302 Found in 57ms (ActiveRecord: 8.2ms)
2014-05-07T18:40:46.409915+00:00 app[web.1]: Started GET "/" for 24.20.217.80 at 2014-05-07 18:40:46 +0000
2014-05-07T18:40:46.423250+00:00 app[web.1]: Processing by SwitchesController#show as HTML
2014-05-07T18:40:46.451349+00:00 app[web.1]: Rendered switches/show.html.haml within layouts/application (12.7ms)
2014-05-07T18:40:46.446554+00:00 app[web.1]: Rendered switches/_form.html.haml (7.4ms)
2014-05-07T18:40:46.452492+00:00 app[web.1]: Completed 200 OK in 28ms (Views: 19.0ms | ActiveRecord: 1.4ms)
2014-05-07T18:40:46.451312+00:00 app[web.1]: Rendered switches/show.html.haml within layouts/application (12.7ms)
Проект запущен на сайте testing-pusher.herokuapp.com.