通过迪斯科物品进行XMPP快速分页-MUC Light Rooms

时间:2019-07-05 09:53:01

标签: xmpp paging smack multiuserchat mongoose-im

我正在尝试在我的应用程序中使用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)。

有人可以帮我吗?

谢谢

0 个答案:

没有答案