我正在尝试在我的应用程序中使用MongooseIM MUC Light模块。一切正常,但我无法加载超过10个MUC Light聊天室。根据他们的文档,它将仅返回前10个房间,然后我们必须对它们进行分页。
MUC指示灯:https://mongooseim.readthedocs.io/en/latest/open-extensions/muc_light/
这是发送MUC房间请求时收到的响应。
<iq from='muclight.shakespeare.lit'
id='hx51v49s'
to='hag66@shakespeare.lit/pda'
type='result'>
<query xmlns='http://jabber.org/protocol/disco#items'>
<item jid='alls-well-that-ends-well@muclight.shakespeare.lit'
name='Everybody dies'
version='1'/>
<item jid='as-you-like-it@muclight.shakespeare.lit'
name='As you like it'
version='2'/>
.
.
.
<set xmlns='http://jabber.org/protocol/rsm'>
<first index='0'>alls-well-that-ends-well@muclight.shakespeare.lit</first>
<last>henry-the-fifth@muclight.shakespeare.lit</last>
<count>37</count>
</set>
</query>
</iq>
在这里您可以注意到<set/>
节点带有分页信息。目前,我正在使用下面的Smack代码来获取聊天室。
public DiscoverItems getMUCLightRooms() {
DiscoverItems discoverItems = null;
try {
discoverItems = ServiceDiscoveryManager.getInstanceFor(mXMPPConnection).discoverItems(JidCreate.from(MUC_LIGHT_SERVICE_NAME));
DiscoverItemsOne disco = new DiscoverItemsOne();
disco.setType(IQ.Type.get);
disco.setTo(JidCreate.from(MUC_LIGHT_SERVICE_NAME));
disco.setNode(null);
Stanza result = mXMPPConnection.createStanzaCollectorAndSend(disco).nextResultOrThrow();
return (DiscoverItems) result;
} catch (Exception e) {
e.printStackTrace();
}
return discoverItems;
}
在这里,项目列表包含 DiscoverItems ,其中包含有关房间的信息。但是我不确定如何从响应中获取分页信息。我想从响应中获取第一,最后和计数值。
我检查了DiscoverItems类,它没有包含的分页信息(RSMSet)。
有人可以帮我吗?
谢谢