2010-04-02 83 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設置 - 只是類型和命名空間)。