Я пытаюсь использовать модуль MongooseIM MUC Light в своем приложении.Все работает нормально, но я не могу загрузить более 10 чатов MUC Light.Согласно их документу, он вернет только первые 10 комнат, а затем мы должны разбить их на страницы.
MUC Light: 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 , который содержит информацию о комнатах.Но я не уверен, как получить пейджинговую информацию из ответа.Я хочу получить из ответа first , last и count .
Я проверил DiscoverItems класс, он не включает информацию о пейджинге (RSMSet).
Может ли кто-нибудь помочь мне в этом?
Спасибо