我正在使用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是基于服务器的协议而不是基于点对点的协议,因此这不是实现此目标最合理的方式(如果我错了,请纠正我)。此代码示例如下:
Iterator joinedRooms = MultiUserChat.getJoinedRooms(conn, "user3@host.org/Smack");
如果有人能够提供一个链接或者提供一个如何完成这个任务的例子,那将不胜感激。