【问题标题】:XMPP Duplicate message handling in MUCMUC 中的 XMPP 重复消息处理
【发布时间】:2016-04-18 10:56:45
【问题描述】:

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

场景:

假设服务器时间是 T100,客户端的时钟比服务器时间晚 10 秒(我们称这个时间为 T90)。

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

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

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

谢谢,

【问题讨论】:

    标签: xmpp ejabberd xmppframework muc


    【解决方案1】:

    MAM 消息具有 ID。您可以使用这些 id 在存档中进行分页、检索消息和取消重复。

    【讨论】:

    • 我不确定 MAM ids 在这里有什么帮助。假设客户端已加入房间并已询问房间历史记录,并且服务器将带有 MAM id 'M1' 的单个消息发送回客户端。接下来,客户端从房间接收到 100 条活动消息。客户端现在断开连接并尝试再次加入房间,询问 MAM id 'M1' 之后的所有消息。客户端将从房间历史记录中收到至少 100 条消息,其中前 100 条将是重复的。几个问题。 Stanza Id 和 MAM Id 相同吗?是否可以添加一个为所有聊天消息添加时间戳的钩子?
    • id不一样,但是如果你是用MAM取回消息,那么就不会收到历史消息,你可以在加入的时候要求零历史消息。
    • 好吧,我一定会看看的。目前我已经设法编写了一个钩子,为所有群聊消息添加时间戳:)
    • @MithunRaman 嗨,您能否告诉您如何设法在所有群组消息中添加时间戳,因为如果消息立即发送,则不会出现延迟标签,只有存档标签会带有身份证。
    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 2016-08-26
    • 2017-03-19
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多