XMPP Smack пейджинг через диско предметы - MUC Light Rooms - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь использовать модуль 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).

Может ли кто-нибудь помочь мне в этом?

Спасибо

...