【问题标题】:MultiUserChat get chat room user?MultiUserChat 获取聊天室用户?
【发布时间】:2012-05-04 15:50:06
【问题描述】:

我正在研究 ASmack。 使用 asmack 获取聊天室用户列表是否可行? http://www.igniterealtime.org/builds/smack/docs/latest/documentation/extensions/muc.html 此列表未显示。请给我一些想法。

【问题讨论】:

    标签: asmack


    【解决方案1】:

    哪个列表?

    如果您是 MUC 的居住者,或者换句话说,如果您已加入 MUC,您只能致电 getOccupants()

    【讨论】:

    • 我正在调用 getOc​​cupants() 但它不会一直返回居住者列表。根据我的问题,我在 SO 中问了一个问题,看看这个stackoverflow.com/questions/16335872/…,然后告诉我如何解决这个问题。
    【解决方案2】:

    getOccupants() 对我不起作用。所以你可以试试下面的代码:

     try {         
           ServiceDiscoveryManager discoManager =  ServiceDiscoveryManager.getInstanceFor(xmppConn);
           DiscoverItems discoItems = discoManager.discoverItems(roomJID);
           Iterator<DiscoverItems.Item> occupants = discoItems.getItems();  
    
         } catch (XMPPException e) {
           e.printStackTrace();                
         }
    

    【讨论】:

    • 我使用的是 4.1.0 rc1,我无法通过 getOc​​cupants() 获取住户。 ServiceDiscoveryManager 为我工作。
    【解决方案3】:

    通过将参数作为 MultiUserChat 对象传递的简单跟随方法,我能够获取 XMPP 聊天室中可用的用户列表。

    public static List<String> findMulitUser(MultiUserChat muc) {
        List<String> listUser = new ArrayList<String>();
        Iterator<String> it = muc.getOccupants();
        // Traverse the chat room name
        while (it.hasNext()) {
            // Chat room members name
            String name = StringUtils.parseResource(it.next());
            System.out.println("Name Of Occupants------>" + name);
            listUser.add(name);
        }
        return listUser;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-22
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      相关资源
      最近更新 更多