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('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 メソッドはコールバックされませんが、sendIQ の後に onRoster メソッドを呼び出すことができます。
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 をコールバックできないのはなぜですか? 根本的な原因は何ですか?私は何が欠けていますか?