首页 > 解决方案 > 指定 id 后无法通过 MAM 检索 XMPP 消息

问题描述

我正在写一个 xmpp 信使。根据我的设计,它存储本地消息历史记录。当用户上线并与某人打开对话框时,我的程序使用“after”标签从本地存储的最后一条消息到服务器存档的最后一条消息请求存档(XEP-313)。然而,它并没有按照我预期的方式工作。

请求

<iq id="qxmpp21" type="set">
    <query xmlns="urn:xmpp:mam:1" queryid="qxmpp21">
        <x xmlns="jabber:x:data" type="submit">
            <field type="hidden" var="FORM_TYPE"><value>urn:xmpp:mam:1</value></field>
            <field type="text-single" var="with"><value>user1@domain.org</value></field>
        </x>
        <set xmlns="http://jabber.org/protocol/rsm">
            <max>100</max>
            <after>5d10ba97-9ce8-46d4-9547-4f5e91e4ac19</after>
        </set>
    </query>
</iq>

响应

<iq xmlns="jabber:client" id="qxmpp21" xml:lang="en" xmlns:xml="http://www.w3.org/XML/1998/namespace" type="result" from="user2@domain.org" to="user2@domain.org/QXmpp">
    <fin xmlns="urn:xmpp:mam:1" queryid="qxmpp21" complete="true">
        <set xmlns="http://jabber.org/protocol/rsm">
            <count xmlns="http://jabber.org/protocol/rsm">465</count>
        </set>
    </fin>
</iq>

我使用 qxmpp 库和 ejabberd 作为服务器。

我做错什么了吗?提前致谢!

标签: xmppejabberdqxmpp

解决方案


推荐阅读