我有:ios app; 服务器:openfire; 框架:来自Robby Hanson的xmppframework。
应用程序的逻辑是当用户登录时,应用程序会将他推入一个拥有最少成员数量的随机房间。
该应用程序成功获取服务器启动时所有房间的列表。 但我需要知道哪些房间对于用户来说是空的!
有一种名为" fetchmemberslist"的方法,但它只会在您连接到该房间时返回房间成员列表。
我需要能够在不连接房间的情况下做同样的事情。
想想我有1000个房间。使用此方法,应用程序需要连接到每个房间,设置委托,激活,等待IQ,删除委托,停用,然后通过数组找到一个成员最少的人。 不是太难做了吗?
我已经挖掘了整个互联网,当你连接到一个房间时,一切都会导致获得会员名单。
如果没有连接房间,有没有办法做到这一点。
非常感谢提前!
答案 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>
,其中房间名由服务器找到本身。