XMPP: AngularJS + Strophe

Основной XMPP с strophe и javascript хочет конвертировать в AngularJS.

.controller('loginCtrl', function(xmppAuth) {

    xmppAuth.auth(login, password);

})

и в обслуживании:

    .service('xmppAuth', function() {

.return {

    auth: function(login, password) {
       connect = new Strophe.Connection(domain);
       connect.connect(login, password, function (status) {
           if (status === Strophe.Status.CONNECTED) {
               connect.addHandler(on_roster_changed,"jabber:iq:roster", "iq", "set");
               connect.addHandler(on_iq, null, "iq","");
               connect.addHandler(on_presence, null, "presence");
               connect.addHandler(on_message, null, 'message', '');
           }
       }
    }

    }

})

в файле JS

var on_presence = function(presence){
    code
}

когда я запускаю это, нет ошибки. Но все события обработки, такие как метод on_presence(), вызываются только один раз. это событие-обработчик объекта Strophe Connection. Есть ли какие-либо остатки в этом коде или что я должен сделать для обработки события strophes с angularJS?

Я ссылался на эту ссылку, но она не работает.

1 ответ

Решение

Смотрите документацию Strophe.js для addHandler:

Обработчик должен вернуть true, если он должен быть вызван снова; возвращение false удалит обработчик после его возврата.

Следовательно, ваш код on_presence должен возвращать true, если вы хотите, чтобы он вызывался снова:

var on_presence = function(presence) {
    // do some stuff
    return true;
};
Другие вопросы по тегам