2010-04-02 11 views
1

Comment puis-je interroger la liste complète à l'aide du client JSJAC XMPP? J'ai essayé la fonction suivante pour cela, mais il ne fonctionne pas:Comment interroger la liste à l'aide du client JSJAC XMPP

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

Répondre

2

Au lieu de con.send, essayez:

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

Vous devez avoir un rappel qui se déclenche lorsque la liste est retourné. Pour être complet, définissez aussi un error_handler, au cas où une erreur IQ serait renvoyée ou que vous expireriez.

+1

Je viens de changer la ligne: roster.setIQ (null, 'get', 'roster_1'); avec roster.setIQ (con.domain, 'get', 'roster_1'); et cela fonctionne maintenant. J'ai déjà un IQhandler pour traiter la réponse. – Adnan

0

désolé pour commenter cette vieille question, hoewever ce apparaît comme # 1 résultat dans google sur « liste JSJAC » et les réponses ci-dessus n'a pas fonctionné pour moi. Je ne sais pas si quelque chose a changé dans l'API JSJaC, mais je recevais des erreurs d'iq 'service-unavaliable'. J'ai dû utiliser ce code à la place:

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

(donc aucun paramètre de domaine et aucun paramètre d'id - juste le type, et l'espace de noms).