繁体   English   中英

smack API在openfire服务器上获取所有公共房间

[英]smack api get all public rooms on openfire server

我正在使用XMPP smack api连接到Openfire服务器。 我试图查询服务器以返回所有可用的公共房间,而无需事先知道这些房间的名称。 这样做的目的是使我的客户可以显示所有可用公共房间的列表,并相应地加入它们。 Smack扩展文档提供了几个从服务器返回房间信息的示例,但是这些示例似乎都不符合我的需求。

一个示例要求您事先知道房间的名称,如果您想显示客户否则不知道的可用房间,这是不好的。 此示例的代码如下。

 // Discover information about the room roomName@conference.myserver
  RoomInfo info = MultiUserChat.getRoomInfo(conn, "roomName@conference.myserver");
  System.out.println("Number of occupants:" + info.getOccupantsCount());
  System.out.println("Room Subject:" + info.getSubject());

另一个示例使您可以查询所有联系人当前所在的房间。这似乎是获取房间名称的非常​​间接的方式,并且有可能将某些房间留在外面。 由于XMPP是基于服务器的协议,而不是基于p2p的协议,因此这似乎不是实现此目的的最合乎逻辑的方式(尽管如果我做错了,请更正我)。 此代码示例如下

 Iterator joinedRooms = MultiUserChat.getJoinedRooms(conn, "user3@host.org/Smack");

如果有人可以给我发送链接或提供有关如何完成此操作的示例,将不胜感激。

看起来MultiUserChat.getHostedRooms()是您要寻找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM