XMPP获取房间当前在线用户列表

<iq>请求格式如下:

<iq to='staff158@chat.fayfox'
    type='get'
    id='userlist' xmlns='jabber:client'>
    <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq> 

上面id是随便指定的(在绑定监听事件的时候有用),to的值是房间名。

利用Strophe构建这个iq请求,代码如下:


var iq = $iq({to: "staff158@chat.fayfox", type: "get", id: "userlist"})
    .c("query", {xmlns: "http://jabber.org/protocol/disco#items"});
xmpp_chat.conn.send(iq);


服务器会返回指定房间的用户列表,格式如下

<body xmlns="http://jabber.org/protocol/httpbind">
   <iq id="userlist" xmlns="jabber:client" from="staff158@chat.fayfox" 
        to="testuser@fayfox/30182775501359449544554420" type="result">
        <query xmlns="http://jabber.org/protocol/disco#items">
            <item jid="staff158@chat.fayfox/Jamal" name="Jamal"></item>
            <item jid="staff158@chat.fayfox/Karma Hu" name="Karma Hu"></item>
            <item jid="staff158@chat.fayfox/Lee" name="Lee"></item>
            <item jid="staff158@chat.fayfox/Misty" name="Misty"></item>
        </query>
    </iq>
</body>