如何使用 Asmack 从 Openfire Sever 中获取所有用户创建的聊天室列表

Posted

技术标签:

【中文标题】如何使用 Asmack 从 Openfire Sever 中获取所有用户创建的聊天室列表【英文标题】:How to fetch all user created Chat Rooms List from the Openfire Sever USING Asmack 【发布时间】:2016-10-19 07:57:59 【问题描述】:

我正在创建多个用户可以相互交流的群聊应用程序。 我不明白如何使用 smack api 从 openfire 服务器获取所有用户创建的聊天室。

【问题讨论】:

【参考方案1】:

第一步:

检查服务器上可用的服务。

每个服务可以托管 0 个或多个群聊。 默认情况下,Openfire 只注册一个服务,默认名称是conference

List<String> services = MultiUserChatManager.getInstanceFor( connection ).getServiceNames();

第二步:

检查所有托管的群聊并根据需要存储结果。 例如:

Map<String, List<HostedRoom>> chatroomInServices = new HashMap<String,List<HostedRoom>)(services.size());

for (String service : services)

 chatroomInServices.put(service, MultiUserChatManager.getInstanceFor( connection ).getHostedRooms( service  ) );


    for (List<HostedRoom> hosted: chatroomInServices.values())
   
      for (HostedRoom room : hosted)
     
       room.getJid();  // user@conference.server
     
   

您可能还需要存储每个 roomJid

【讨论】:

以上是关于如何使用 Asmack 从 Openfire Sever 中获取所有用户创建的聊天室列表的主要内容,如果未能解决你的问题,请参考以下文章

如何发送消息?安卓,asmack,openfire

离线消息显示为???? , aSmack 和 openfire

Android asmack openfire接收文件

Asmack/Openfire 401 错误

Asmack 文件发送错误 503 类型 = 使用 openfire 取消

aSmack 4.0.* XMPPTCPConnection 无法连接到 OpenFire 和 Ejabbered (SmackException$NoResponseException)