XEP-0133:管理员请求获取所有在线用户列表

XEP-0133: Admin request to get all online users list

本文关键字:在线 用户 列表 获取 管理员 请求 XEP-0133      更新时间:2023-09-26

我使用iq方法尝试了strophe.js,可以获得在线用户数量,但无法从我的Openfire 3.9.3服务器获得在线用户列表。

XMPP请求正文:

<iq from='admin@localhost/7adf302e' to='admin@localhost' type='set' xml:lang='en' xmlns='jabber:client' id='6816:sendIQ'>
  <command xmlns='http://jabber.org/protocol/commands' node='http://jabber.org/protocol/admin#get-online-users-list' />
</iq>

XMPP响应

<iq xmlns="jabber:client" type="error" id="6816:sendIQ" from="admin@localhost" to="admin@localhost/7adf302e">
  <command xmlns="http://jabber.org/protocol/commands" node="http://jabber.org/protocol/admin#get-online-users-list"/>
  <error code="404" type="cancel">
    <item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
  </error>
</iq>

参考编号:http://xmpp.org/extensions/xep-0133.html#get-在线用户列出

如XEP-0050中所述,对命令请求的item-not-found错误响应意味着"响应的JID找不到请求的命令节点",即服务器不支持获取在线用户列表的命令。

快速浏览一下Openfire源代码,它似乎确实支持节点http://jabber.org/protocol/admin#get-active-users上的Get List of Active Users命令。看起来这个命令只是返回连接到服务器的用户,所以我不确定这是否与本例中的"获取所有在线用户"命令有任何不同。