Xmpp 使用XEP-0313获取每次对话的最后一条消息?

Xmpp 使用XEP-0313获取每次对话的最后一条消息?,xmpp,Xmpp,我正在使用一个XMPP服务器,该服务器实现用于检索会话历史记录。我只想获取每个对话的最后一条消息,这样我就可以创建一个列表,列出您最近的对话,预览最后一条消息 我已经设法获取了所有对话的所有消息,并以此为基础构建了列表,但这是对数据的巨大浪费,不是一种选择。我不确定这是否是完成此任务的正确分机,因此,如果有其他分机,请为我指明正确的方向。您可以轻松地做的一件事是首先检索用户名册,然后为每个联系人检索最新消息 结果: 从或检索最后一封邮件nurse@example.com: urn:xm

我正在使用一个XMPP服务器,该服务器实现用于检索会话历史记录。我只想获取每个对话的最后一条消息,这样我就可以创建一个列表,列出您最近的对话,预览最后一条消息


我已经设法获取了所有对话的所有消息,并以此为基础构建了列表,但这是对数据的巨大浪费,不是一种选择。我不确定这是否是完成此任务的正确分机,因此,如果有其他分机,请为我指明正确的方向。

您可以轻松地做的一件事是首先检索用户名册,然后为每个联系人检索最新消息


结果:


从或检索最后一封邮件nurse@example.com:


urn:xmpp:mam:1
nurse@example.com
1.

当然,用户可以与不在其花名册上的人进行对话,但实际上这在XMPP上非常罕见。

我对XMPP的经验非常有限,但据我所知,花名册就是您的“联系人列表”。我想它不会包括集体聊天,对吧?这意味着,如果你参加了一次群聊,它将不会出现在使用这种技术的对话历史记录中,这对我来说还不够好。如果我的假设是错误的,请纠正我。正确的,你的名册就是你的联系人名单。在我看来,大多数服务器实现并不存档群组聊天消息,而是假设群组聊天服务器本身公开了MAM存档。这意味着很容易获得最后一条消息,但要发现用户参与了哪些群组聊天则要困难得多,除非这些群组聊天都已添加书签。在我看来,我可能需要一个非标准的XMPP扩展来完成这项任务。考虑到我的用例必须非常常见,并且XMPP是主要标准,我发现这有点令人惊讶。一定有人在我之前做过这件事。@ErikB最近在编写名为MIX的新群聊协议方面取得了一些进展:。我认为使用MIX会使您的用例更简单。@xnyhps如果您这样做,您必须为花名册中的每个成员打一个网络电话。如果我的花名册上有1000人,每次网络通话需要250毫秒,也就是25秒,再加上大量的网络使用。有什么方法可以批量完成吗?我正在用xmpp开发一个android聊天应用程序。我已经成功地实现了这一点,并且我能够发送和接收消息。我已经使用SQLite在设备内部存储了聊天数据,但一旦卸载应用程序,聊天数据就会被删除。所以我检查了XEP-0313,它可以在服务器上保存用户之间的聊天记录,我在从eJabberd服务器检索两个用户之间的聊天记录时遇到了问题。我读过关于XEP-0313的文章,但我不知道如何在我的android应用程序中使用它。我正在使用Android Studio。Thanks@Paritosh我不明白这和我的问题有什么关系。看来你只是想让我帮你实现XEP-0313。我是为iOS做的,所以我不确定Android可以使用哪些库,但是对于iOS,我当时找不到这个协议的实现,所以我不得不自己实现它。这是一个很大的工作,但我不能说这是困难的。这只是正常的开发工作。如果你需要其他人来做你的开发工作,你应该雇人。我目前不在,但如果你只需要开始时的帮助,我想我可以找到时间。嗨。。!!谢谢你的回复。我现在已经成功地在Android上实现了XEP-0313。我只是想知道我们如何在Android中实现这个库,因为获取历史的方法应该类似于我们在Android和iOS中使用相同的库。我用MamManger来检索历史。@ErikB你找到正确的解决方案了吗?我在问类似的问题,但仍然没有上帝的建议