【问题标题】:smack api get all public rooms on openfire serversmack api 获取 openfire 服务器上的所有公共房间
【发布时间】:2011-09-23 15:44:27
【问题描述】:

我正在使用 XMPP smack api 连接到 Openfire 服务器。我正在尝试查询服务器以返回所有可用的公共房间,而无需事先知道房间的名称。这样做的目的是让我的客户可以显示所有可用公共房间的列表并相应地加入它们。 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 是基于服务器的协议,而不是基于 p2p 的协议,这似乎不是实现这一点的最合乎逻辑的方式(尽管如果我错了,请纠正我)。此代码示例如下

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

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

【问题讨论】:

    标签: java xmpp openfire smack


    【解决方案1】:

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

    【讨论】:

    • 谢谢你完美运行,我在示例中没有看到,并且在 jdocs 中一定忽略了它。
    • 我认为 get hostsrooms 应该向您发送用户创建的房间,但用户已加入但未托管的房间呢?
    • 嗨@Robin 我无法执行任何 MultiUserChat 的静态方法。我得到 NullPointerException。在执行这个方法之前我们需要设置什么吗??
    • @Robin。在使用此方法或使用 getJoinedRooms 方法时,我得到了空集合。可能的错误是什么。你能帮忙吗?看看我的代码。 pastie.org/8340999
    猜你喜欢
    • 2013-11-20
    • 1970-01-01
    • 2019-01-23
    • 2016-07-28
    • 1970-01-01
    • 2011-10-01
    • 2013-05-07
    • 1970-01-01
    • 2015-07-27
    相关资源
    最近更新 更多