简体   繁体   中英

smack api get all public rooms on openfire server

I am using the XMPP smack api to connect to an Openfire server. I am trying to query the server to return all public rooms available without knowing this names of the rooms in advance. The goal of this is so that my client can display a list of all public rooms available and join them accordingly. The Smack Extensions Documentation provides several examples of returning room information from the server however none of them seem to fit my need.

One example requires you to know the name of the room beforehand, which is no good if you want to display available rooms that the client otherwise has no knowledge of. The code for this example is as follows.

 // 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());

Another example allows you to query the rooms that all of your contacts are currently in. This seems to be a very indirect way of getting room names and has the potential to leave some of the rooms out. As XMPP is a server based protocol and not a p2p based protocol this does not seem like the most logical way of accomplishing this (although please correct me if I am wrong). This code example is as follows

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

If someone could either please send me a link or provide an example of how to accomplish this it would be greatly appreciated.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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