Привязка пушера к событиям вне зависимости от канала

Я пытаюсь прослушать определенный тип события независимо от канала, в котором оно было инициировано. Мое понимание документации (http://pusher.com/docs/client_api_guide/client_events#bind-events/lang=js) заключалась в том, что я могу сделать это, вызвав метод bind в экземпляре толкателя, а чем на экземпляре канала. Вот мой код:

var pusher = new Pusher('MYSECRETAPPKEY', {'encrypted':true}); // Replace with your app key 
var eventName = 'new-comment'; 
var callback = function(data) { 
  // add comment into page 
  console.log(data); 
};

pusher.bind(eventName, callback); 

Затем я использовал инструмент Event Creator на портале моей учетной записи, чтобы создать событие. Я использовал случайное имя канала, установил для события значение «новый комментарий» и просто вставил случайный фрагмент текста в данные события. Но в моей консоли ничего не отображается.

Я использую https://d3dy5gmtp8yhk7.cloudfront.net/2.1/pusher.min.js, и выполнение этого теста в последней версии Chrome.

Что мне не хватает?

Спасибо!

Шахиб Р.


person Shaheeb Roshan    schedule 18.09.2013    source источник


Ответы (1)


Pusher будет отправлять события клиенту только в том случае, если этот клиент подписался на канал. Итак, первое, что вам нужно сделать, это подписаться на канал. Привязка к событию на клиенте:

pusher.bind('event_name', function( data ) {
  // handle update
} );

Это также известно как «привязка глобального события».

Я тестировал это с помощью этого кода, и он действительно работает: http://jsbin.com/AROvEDO/1/edit

Вот код для полноты:

var pusher = new Pusher('APP_KEY');
var channel = pusher.subscribe('test_channel');
pusher.bind('my_event', function(data) {
  alert(data.message);
});
person leggetter    schedule 21.09.2013
comment
Не могли бы вы пояснить, что вы подразумеваете под глобальным связыванием событий? Основываясь на вашем коде, означает ли это, что сообщения my_event, отправленные на канал с именем TotallyRandomChannel, будут по-прежнему распознаваться и регистрироваться вашим фрагментом? В чем разница между pusher.bind () и channel.bind ()? Спасибо за вашу помощь! SR - person Shaheeb Roshan; 23.09.2013
comment
Событие достигнет клиента, только если он подписан на totallyRandomChannel. Обратный вызов pusher.bind не позволяет узнать, на каком канале произошло событие. с channel.bind в вашем собственном коде будет яснее, на каком канале было инициировано событие. Я бы рекомендовал использовать channel.bind. - person leggetter; 24.09.2013
comment
Интересно. Есть ли в Pusher какие-либо средства для привязки к определенному типу события независимо от канала, в котором оно было сгенерировано? Этакий глобальный способ привязки к конкретному событию? еще раз спасибо! SR - person Shaheeb Roshan; 25.09.2013
comment
Нет. Клиент должен быть подписан на канал. Вместо этого вы можете использовать глобальный канал, на который подписаны все клиенты и на котором публикуются все события глобального типа. Pusher поддерживает публикацию одного и того же события на нескольких каналах, что может облегчить это. - person leggetter; 25.09.2013
comment
Понял. Большое спасибо за Вашу помощь! Однако я должен сказать, что я нашел официальную документацию по этому поводу вводящей в заблуждение. Состояние документов Вы можете привязать к событиям независимо от того, на какой канал транслируется событие. Ниже приведен пример приложения, которое связывается с событием нового комментария из любого канала: а затем переходит к описанию фрагмента, который я изначально опубликовал. Однако, судя по вашему описанию, документы предоставляют неверную информацию. В любом случае с благодарностью принимаю ваш ответ. Спасибо еще раз! - person Shaheeb Roshan; 26.09.2013
comment
Я передам ваши комментарии команде Pusher. Рад, что смог помочь. - person leggetter; 26.09.2013