XMPP获取房间成员数量而不连接房间

时间:2014-05-08 13:16:58

标签: ios xmpp openfire xmppframework

我有:ios app; 服务器:openfire; 框架:来自Robby Hanson的xmppframework。

应用程序的逻辑是当用户登录时,应用程序会将他推入一个拥有最少成员数量的随机房间。

该应用程序成功获取服务器启动时所有房间的列表。 但我需要知道哪些房间对于用户来说是空的!

有一种名为" fetchmemberslist"的方法,但它只会在您连接到该房间时返回房间成员列表。

我需要能够在不连接房间的情况下做同样的事情。

想想我有1000个房间。使用此方法,应用程序需要连接到每个房间,设置委托,激活,等待IQ,删除委托,停用,然后通过数组找到一个成员最少的人。 不是太难做了吗?

我已经挖掘了整个互联网,当你连接到一个房间时,一切都会导致获得会员名单。

如果没有连接房间,有没有办法做到这一点。

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

1)fetchMemberList:查询会员,而不是现在出席会议室的人员列表。你真的想要会员,不是网友吗?无论如何,如果你是房间管理员,这个查询可以在没有加入空间的情况下工作。

2)如果您想查询在线用户,您应该使用不同的查询 - 请参阅http://xmpp.org/extensions/xep-0045.html#disco-roomitems

3)此外,没有人可以禁止你在服务器端实现房间成员/在线计数,并创建自定义查询,如<iq id='123' type='get'><freeroom xmlns='my:freeroom:query' /></iq>,其房间JID的响应如<iq id='123' type='result'><freeroom xmlns='my:freeroom:query'><jid>roomname@conference.example.com</jid></freeroom></iq>,其中房间名由服务器找到本身。