2014-02-19 3 views
2

Я использую Pusher (pusher.com), чтобы инициировать уведомление для всех зарегистрированных клиентов всякий раз, когда администратор отправляет их.Событие Pusher запускается дважды

По какой-то причине событие стреляет дважды, хотя я его запускаю только один раз.

Client код сторона подписки:

var handleToastrListener = function() { 

    var pusher = new Pusher("913284db62a0cc237db4"); 
    var channel = pusher.subscribe('toastr-channel'); 

      channel.bind('new-toast', function(data) { 

      toastr.options = data.options; 
      var $toast = toastr[data.scf](data.msg, data.title); 

      return true; 

      }); 
    } 

     handleToastrListener(); 

стороне сервера опубликовать код (PHP с использованием пакета толкатель):

$pusher = new Pusher(PUSHER_KEY, PUSHER_SECRET, PUSHER_APP_ID); 
$pusher->trigger('toastr-channel', 'new-toast', $input); 

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

Толкатель-JS каротаж Javascript, однако, показывает два сообщения:

Pusher : Event recd : {"event":"new-toast","data":{"options":{"positionClass":"toast-top-right","onclick":"","showDuration":"1000","hideDuration":"1000","timeOut":"5000","extendedTimeOut":"1000","showEasing":"swing","hideEasing":"linear","showMethod":"fadeIn","hideMethod":"fadeOut"},"title":"Toastr Notifications","msg":"Gnome & Growl type non-blocking notifications","scf":"success"},"channel":"toastr-channel"} app.js:143 
Pusher : Event recd : {"event":"new-toast","data":{"options":{"positionClass":"toast-top-right","onclick":"","showDuration":"1000","hideDuration":"1000","timeOut":"5000","extendedTimeOut":"1000","showEasing":"swing","hideEasing":"linear","showMethod":"fadeIn","hideMethod":"fadeOut"},"title":"Toastr Notifications","msg":"Gnome & Growl type non-blocking notifications","scf":"success"},"channel":"toastr-channel"} 

глядя дальше, я обнаружил, что подписка происходит дважды, хотя я называю это только один раз:

Pusher : Event sent : {"event":"pusher:subscribe","data":{"channel":"toastr-channel"}} app.js:143 
Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"toastr-channel"} app.js:143 
Pusher : No callbacks on toastr-channel for pusher:subscription_succeeded app.js:143 
Pusher : State changed : connecting -> connected app.js:143 
Pusher : Event sent : {"event":"pusher:subscribe","data":{"channel":"toastr-channel"}} app.js:143 
Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"toastr-channel"} app.js:143 
Pusher : No callbacks on toastr-channel for pusher:subscription_succeeded 

ответ

2

две вещи обязательно обязательно посмотрите и соответствующим образом обновите свой вопрос:

  1. The Pusher Debug Console - is th e, показанное здесь дважды?
  2. pusher-js JavaScript logging - является ли регистрируемое событие входящих дважды?

Другая распространенная проблема заключается в том, что иногда события могут быть связаны дважды - следовательно, два обратных вызова. Однако ваш код не предполагает, что это происходит.

+0

В консоли отладки отображается только одно сообщение, но в журнале отображаются два. Соответственно, я обновил свой вопрос. – Matanya

+1

Ну, это неловко. Оказывается, я дважды вызывал дескриптор в разных местах моего кода – Matanya