XMPP:AngularJS + Strophe

Posted

技术标签:

【中文标题】XMPP:AngularJS + Strophe【英文标题】:XMPP: AngularJS + Strophe 【发布时间】:2014-08-06 13:40:59 【问题描述】:

带有 strophe 和 javascript 的基本 XMPP 想要转换为 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 对象的处理程序事件。这段代码中是否有任何剩余,或者我应该如何使用 angularJS 处理 strophes 事件?

我推荐了This Link,但它不起作用。

【问题讨论】:

【参考方案1】:

见the Strophe.js docs for addHandler:

如果要再次调用,处理程序应该返回true;返回 false 将在它返回后移除处理程序。

因此,如果您希望再次调用 on_presence 代码,则应该返回 true:

var on_presence = function(presence) 
    // do some stuff
    return true;
;

【讨论】:

是的,正如邮件列表中所说:文档没有充分强调这一事实。许多 Strophe.js 用户最初也犯了这个错误,包括我。我现在添加了一个 PR 来改进文档:github.com/strophe/strophejs/pull/86

以上是关于XMPP:AngularJS + Strophe的主要内容,如果未能解决你的问题,请参考以下文章

xmpp.protocol.Message 和 xmpp.Message 有啥区别?

“xmlns:xmpp”和“xmpp:xmlns”有啥区别?

xmpp 与 python: xmpp.protocol.InvalidFrom: (u'invalid-from', '')

我正在为 FACEBOOK 创建 XMPP 客户端。 xmpp 连接错误.xmpp.login(apiKey + "|" + sessionKey, sessionSecret,

XMPP 流发送,不接收。为啥 XMPP 流可能会断开连接?

在浏览器中使用 xmpp.js 连接到 XMPP 服务器