Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java smack api在openfire服务器上获取所有公共房间_Java_Xmpp_Openfire_Smack - Fatal编程技术网

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

Java smack api在openfire服务器上获取所有公共房间,java,xmpp,openfire,smack,Java,Xmpp,Openfire,Smack,我正在使用XMPP smack api连接到Openfire服务器。我试图查询服务器返回所有可用的公共房间,但事先不知道这些房间的名称。这样做的目的是让我的客户可以显示所有可用公共房间的列表,并相应地加入其中。提供了几个从服务器返回房间信息的示例,但是没有一个符合我的需要 一个例子要求您事先知道房间的名称,如果您想显示客户不知道的可用房间,这是不好的。此示例的代码如下所示 // Discover information about the room roomName@conference.my

我正在使用XMPP smack api连接到Openfire服务器。我试图查询服务器返回所有可用的公共房间,但事先不知道这些房间的名称。这样做的目的是让我的客户可以显示所有可用公共房间的列表,并相应地加入其中。提供了几个从服务器返回房间信息的示例,但是没有一个符合我的需要

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

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

如果有人可以给我发送一个链接或提供一个如何实现这一点的例子,将不胜感激

它看起来像是多用户聊天。getHostedRooms()就是您要找的。

谢谢您的完美工作,我在示例中没有看到这一点,在jdocs中肯定忽略了这一点。我认为get-HostedRoom应该向您发送用户创建的聊天室,但是用户加入但未托管的聊天室呢?Hi@Robin我无法执行任何多用户聊天的静态方法。我得到了NullPointerException。在执行这个方法之前,我们需要设置什么吗???@Robin。使用此方法或getJoinedRooms方法时,我得到的集合为空。可能的错误是什么。你能帮忙吗。看看我的代码。