2016-01-13 56 views
0

是否可以在ejabberd服务器发送的消息中添加服务器时间戳?这将有助于同步服务器和客户端的时钟时间。我在尝试在MUC聊天中检索邮件历史记录时遇到困难。XMPP MUC中的重复消息处理

场景:

让说,服务器时间是T100和客户端的时钟服务器时间落后10秒(让我们把这个时间T90)。

在T100,服务器向客户端发送消息M1。客户在T90时间(当地客户)收到此消息。

接下来,客户端脱机并尝试重新加入组。在时间T90之后客户端请求所有消息(因为在T90处客户端接收到最后接收到的消息M1)。

服务器再次将M1发送回客户端,因为M1的时间戳为T100。

谢谢,

回答

0

MAM消息有ID。您可以使用这些ID在归档中进行分页,检索消息并取消失败。

+0

我不确定MAM id如何帮助这里。 可以说客户已经加入了一个房间并询问了房间的历史记录,并且服务器向客户端发送了带有MAM ​​id'M1'的单个消息。接下来,客户端从房间接收100条活动消息。 客户端现在断开连接并尝试再次加入房间,询问MAM id为'M1'后的所有消息。客户将从房间历史记录中收到至少100条消息,其中前100条将是重复的。 几个问题。 Stanza Ids&MAM Ids是否一样? 添加一个为所有聊天消息添加时间戳的挂钩可以吗? –

+0

这个id是不同的,但如果您使用MAM来检索邮件,那么不会收到历史邮件,您可以在加入时询问零历史邮件。 –

+0

那么我一定会看看。目前我已经设法编写一个钩子,为所有群组消息添加时间戳:) –