2013-09-06 1 views
0

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

Pusher : State changed : initialized -> connecting 
rt_cli...?body=1 (line 5) 
Pusher : Connecting : {"transport":"ws","url":"ws://ws-eu.pusher.com:80/app/xxxxxxxxxxxxx?protocol=6&client=js&version=2.1.2&flash=false"} 
rt_cli...?body=1 (line 5) 
Pusher : State changed : connecting -> connected 
rt_cli...?body=1 (line 5) 
POST http://localhost:3000/pusher/auth 

pusher.min.js (line 111) 
Connected to Pusher! 
common.js?body=1 (line 56) 
Pusher : Event sent : {"event":"pusher:subscribe","data":{"auth":"179bfeac81d16e6ae36f:81fa74052368dac232d70146d2f2d343f3d4ce5befc34bce43673a9e6ceaa38a","channel":"private-user-channel-11"}} 
rt_cli...?body=1 (line 5) 
Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"private-user-channel-11"} 
rt_cli...?body=1 (line 5) 
Pusher : No callbacks on private-user-channel-11 for pusher:subscription_succeeded 

Клиент сторона подключения выглядит следующим образом:

$(document).ready(function() { 
     Pusher.host = 'ws-eu.pusher.com'; 
     Pusher.sockjs_host = 'sockjs-eu.pusher.com'; 

     pusher = new Pusher("#{ ENV["PUSHER_APP_KEY"] }", {cluster: "eu"}); 
     var channel = pusher.subscribe("private-user-channel-11"); 

     // Some useful debug msgs 
     pusher.connection.bind('connecting', function() { 
     clog("connecting to pusher"); 
     }); 
     pusher.connection.bind('connected', function() { 
     clog('Connected to Pusher!'); 
     }); 
     pusher.connection.bind('failed', function() { 
     clog('Connection to Pusher failed :('); 
     }); 
     channel.bind('subscription_error', function(status) { 
     clog('Pusher subscription_error'); 
     }); 

     channel.bind("ninja", function(e) { 
     console.log(e); 
     }); 
    }); 

С моего рабочего процесса, я запуская событие так:

Pusher.trigger s_channel_name, "ninja", {"message" => "whatever"} 

Дело в том, что моя страница загружается, а скрипт выполняется, но в браузере я не получаю сообщение. Если, однако, я обновляю страницу (и сохраняю журналы в консоли браузера, я вижу, что сообщение получено). Кроме того, я замечаю, что если я войду в два разных браузера и оставил страницу открытой в обоих из них, браузер, который не обновляется, получит событие в режиме реального времени. Это заставляет меня думать, что браузер, который запускает (даже независимо от запроса), исключается из получателей сообщения. Есть ли способ трансляции всех пользователей, подключенных к частному каналу? Также кажется, что если я запускаю событие вручную из консоли Rails, оно появляется мгновенно (без обновления браузера).

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

+1

может быть стоит подачи вашего решения как ответ на ваш собственный вопрос и обозначение его как ответ. Таким образом, это, похоже, не остается открытым вопросом. – leggetter

ответ

1

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

+0

Итак, как вы решили эту вторичную проблему? – ardochhigh

 Смежные вопросы

  • Нет связанных вопросов^_^