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;
};