2010-04-02 86 views
1

如何使用JSJAC XMPP客户端查询完整名单?我曾尝试下面这个功能,但它不工作:如何使用JSJAC XMPP客户端查询名单

function getRoster(con){ 
    var roster = new JSJaCIQ(); 
    roster.setIQ(null, 'get', 'roster_1'); 
    roster.setQuery(NS_ROSTER); 
    con.send(roster); 
} 

回答

2

相反con.send的,请尝试:

con.sendIQ(roster, {result_handler: function(aIq, arg) { 
    var node = aIq.getQuery() 
    // do something with roster 
    }); 

您必须返回名册时触发回调。要完成,还要设置error_handler,以防IQ错误返回或超时。

+1

我刚换了一行: roster.setIQ(null,'get','roster_1'); 与 roster.setIQ(con.domain,'get','roster_1'); 它现在有效。我已经有一个IQhandler来处理响应。 – Adnan 2010-04-03 10:16:21

0

对这样一个老问题发表评论感到抱歉,hoewever在'JSJAC roster'中弹出了#1的结果,上面的回答对我没用。我不知道在JSJaC API中是否发生了变化,但是我收到了iq错误的'service-unavaliable'。我不得不使用这个代码:

var rosterRequest = new JSJaCIQ(); 
rosterRequest.setType('get'); 
rosterRequest.setQuery(NS_ROSTER); 
connection.send(rosterRequest); 

(所以没有域设置和没有id设置 - 只是类型和命名空间)。