Smack在线用户的多用户聊天列表

时间:2013-04-12 13:54:52

标签: xmpp openfire smack multiuserchat

我正在使用帐户管理员从我的第三方服务器登录我的openfire XMPP服务器。

我需要将可用用户发现到特定的多用户聊天中。对于“可用”,我指的是房间内的所有用户都在线。

我知道一种方法是连接到房间并听取用户的存在,但出于我的目的,我需要动态获取完整的列表。

有可能吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用ServiceDiscovery。这是一个例子:

      // Obtain the ServiceDiscoveryManager associated with my Connection
      ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection);

      // Get the items of a given XMPP entity
      // This example gets the items associated with online catalog service
      DiscoverItems discoItems = discoManager.discoverItems("plays.shakespeare.lit");

      // Get the discovered items of the queried XMPP entity
      Iterator it = discoItems.getItems();
      // Display the items of the remote XMPP entity
      while (it.hasNext()) {
          DiscoverItems.Item item = (DiscoverItems.Item) it.next();
          System.out.println(item.getEntityID());
          System.out.println(item.getNode());
          System.out.println(item.getName());
      }