Javascript 如果调用Strophe.Connection.sendIQ,则Strophe.Connection.addHandler no工作
我有一个关于Strophe.Connection.addHandler和Strophe.Connection.sendIQ的问题。 下面的代码可以工作:Javascript 如果调用Strophe.Connection.sendIQ,则Strophe.Connection.addHandler no工作,javascript,jquery,xmpp,strophe,Javascript,Jquery,Xmpp,Strophe,我有一个关于Strophe.Connection.addHandler和Strophe.Connection.sendIQ的问题。 下面的代码可以工作: Strophe.Connection.addHandler(context.onMessage, null, 'message') onMessage = function (msgXML){ var to = msgXML.getAttribute('to'); var from = msgXML.getAttribute(
Strophe.Connection.addHandler(context.onMessage, null, 'message')
onMessage = function (msgXML){
var to = msgXML.getAttribute('to');
var from = msgXML.getAttribute('from');
var fromBareJid = Strophe.getBareJidFromJid(from);
var type = msgXML.getAttribute('type');
var elems = msgXML.getElementsByTagName('body');
var body = elems[0]
var text = Strophe.getText(body);
return true;
}
但是如果我在调用addHandler之后调用setContactData,onMessage方法将永远不会被回调,但是onFloster方法可以在sendIQ之后调用
setContactData = function(){
var iq = $iq({
type: 'get'
}).c('query', {
xmlns: 'jabber:iq:roster'
});
Strophe.Connection.sendIQ(iq, context.onRoster);
}
onRoster = function(iq){
$(iq).find('item').each(function(){
var jid = $(this).attr('jid');
// transform jid into an id
var jid_id = CommonUtil.getNameFromJid(jid);
userList = userList + "','" + jid_id;
});
为什么不能回拨onMessage?根本原因是什么?我缺少什么?试试这个:
addHandler(context.onMessage, null, 'message', 'chat')//or 'normal'
来自Wrox Professional XMPP编程与JavaScript和jQuery书籍:
addHandler()函数接受一个或多个参数。第一个参数是 在收到匹配节时调用。其余参数为匹配条件。
完整参数 这些参数的列表显示在Strophe源代码中的此缩写函数定义中:
addHandler: function (handler, ns, name, type, id, from) {
// implementation omitted
}
如果任何条件为null或未定义,则任何节都将匹配。否则,节将只匹配
如果它们在节的特定部分通过字符串相等满足标准。最后四个标准- 名称、类型、id和发件人-在节的元素名称和类型、id和发件人上指定筛选器 属性。这四个条件仅在顶级元素上检查,而不在元素的任何一个元素上检查 后代。第一个标准ns稍有不同,它在顶层元素中检查为 以及它的直系子女。你很快就会明白为什么。 名称标准几乎总是空的,以匹配任何节,或消息、存在、状态或状态之一, 或者智商。addHandler()示例设置了一个可以为任何节调用的处理程序 已收到。
类型、id和from条件与和的主要属性匹配 诗节
您可以使用类型来区分普通聊天信息和群组聊天信息 或者把IQ结果节和IQ错误节分开。id标准通常用于处理 对特定请求的回复,如与特定IQ get请求关联的IQ结果