【发布时间】:2017-01-02 23:19:41
【问题描述】:
我使用 Robbie Hanson 的 XMPPframwork 和 Openfire 服务器开发了一个聊天应用程序。 我可以一对一聊天并成功聊天。但是当我获得聊天历史时,我无法获得整个历史。我使用 XEP-0136 来归档历史记录:
发送智商:
<iq type="get" id="hichic@macintosh">
<retrieve
xmlns="urn:xmpp:archive" with="group12@conference.macintosh">
<set
xmlns="http://jabber.org/protocol/rsm">
<max>100</max>
</set>
</retrieve>
</iq>
接收:
<iq type="result" id="hichic@macintosh" to="admin@macintosh/Macintosh">
<chat
xmlns="urn:xmpp:archive" with="group12@conference.macintosh" start="2016-08-23T08:42:55.777Z">
<to secs="0">
<body>asdf</body>
</to>
<to secs="5">
<body>aafs</body>
</to>
<from secs="2" jid="haha@macintosh">
<body>sax</body>
</from>
<set
xmlns="http://jabber.org/protocol/rsm">
<first index="0">0</first>
<last>2</last>
<count>3</count>
</set>
</chat>
</iq>
但是当我打开数据库时,ofMessageArchive 表,我可以看到更多带有 group12 的消息(约 20 条消息),而结果中,我只有 3 条。我会错过什么吗?
【问题讨论】:
-
您是否只收到您在群组中发送的那些消息?
-
@ShoaibAhmadGondal 没有。正如你所看到的结果,其中两个是我发送的,另一个是 haha@macintosh 发送的
-
XEP-0136 在针对您的 IQ 数据包监控插件中的实现基本上通过查询三个表来收集数据:ofConversation、ofConParticipant、ofMessageArchive。您能否在您的数据库中检查您正在查询的房间的引用,这些数据与这三个表中的关系存在。正如您已经提到的,数据存在于 ofMessageArchive 中。
-
哦,我意识到消息属于不同的对话。谢谢你的回答
-
如果对话的 idleTime 或 maxTime 已过,则会创建新对话。因此,请尝试通过从管理控制台定义属性来覆盖默认值。需要覆盖以下两个属性的值:conversation.idleTime = 10,conversation.maxTime = 60。将10、60(小时)更改为更合适的值,然后尝试是否仍然存在问题?
标签: xmpp chat openfire xmppframework