java - smack api获取openfire服务器上的所有公共(public)房间

标签 java xmpp openfire smack

我正在使用 XMPP smack api 连接到 Openfire 服务器。我正在尝试查询服务器以在事先不知道房间名称的情况下返回所有可用的公共(public)房间。这样做的目的是让我的客户可以显示所有可用公共(public)房间的列表并相应地加入它们。 Smack Extensions Documentation提供了几个从服务器返回房间信息的示例,但是它们似乎都不符合我的需要。

一个例子要求你事先知道房间的名字,如果你想显示客户不知道的可用房间,这是不好的。本例代码如下。

 // 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 是基于服务器的协议(protocol)而不是基于 p2p 的协议(protocol),这似乎不是实现此目的的最合乎逻辑的方式(尽管如果我错了请纠正我)。此代码示例如下

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

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

最佳答案

看起来 MultiUserChat.getHostedRooms() 就是您要查找的内容。

关于java - smack api获取openfire服务器上的所有公共(public)房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495737/

相关文章:

java - 根据用户选择将数据从微调器传递到 TextView

使用 strophe js 的基于 Javascript 的 XMPP 聊天客户端 - 示例和教程?

javascript - Converse.js 渲染到容器中

java - openfire 监控节 xml 消息

android - 在 Openfire 服务器中使用 Smack (Android) 加载 Vcards

java - 如何在 catch 和 try 中重构相同值的返回值?

java - JFreeChart 中系列的渐变颜色

java - 如何从存储在列表中的对象数组中获取每列值

javascript - 断开连接的客户端在带有 websockets 的 Openfire 服务器上保持在线

ios - XmmpFramework + Openfire : manage offline messages