3

我在我的 android 项目中使用 smack 库来创建一个即时通讯工具。使用 MessageListener 接收消息并使用 ChatManager 发送消息,我以错误的顺序获取离线消息。在我的服务器上,我安装了 Openfire。

例如,在线用户向离线用户发送 3 条单独的消息“A”、“B”和“C”。当此离线用户随后上线时,未按正确顺序接收消息。他将显示“C”、“B”和“A”。为什么会这样?以及如何解决这个问题?

预先感谢您的任何帮助。

4

1 回答 1

3

这似乎是 Openfire 错误或配置错误。XMPP 消息应按顺序传递:

XMPP 服务器必须确保按顺序处理从连接的客户端或远程服务器通过给定输入流接收的节和其他 XML 元素。

有序处理适用于 (a) 用于协商和管理 XML 流的任何 XML 元素,以及 (b) 对 XML 节的所有使用,[...]

-- RFC6120 第 10.1 节

离线消息没有明确提及,但它们只是服务器功能,并没有记录在协议中。然而,他们也不例外——服务器仍应遵循这些规则。

我建议张贴到Openfire 论坛或提交错误报告

于 2013-07-19T00:49:05.527 回答