【问题标题】:Ejabberd delayed delivery timestampEjabberd 延迟交付时间戳
【发布时间】:2017-01-01 23:04:29
【问题描述】:

我们使用 ejabberd 作为我们的 xmpp 服务器和 iphone xmppframework 作为客户端。 问题是当我们收到离线消息时,消息中写入的时间戳是实际的日期/时间格式,但服务器的时区与客户端的时区不同,所以此时事情变得一团糟。

我们在查询用户的上次活动 (XEP-0012) 时使用了相同的方法,但在上次活动 xep 中,服务器将信息返回为“用户上次登录服务器的几秒前”,因此在此这样我们就可以将秒差应用于我们的客户时间并找到消息传递日期/时间,因此在 Last Activity 查询中没有问题。

但是在延迟交付中,ejabberd 会发送准确的日期和时间值,客户会混淆转换(每个客户的日期和时间可能彼此非常不同)

有谁知道我们该如何解决这个问题?有什么方法可以配置 ejabberd 在发送离线消息之前返回“秒传递信息”?

顺便说一下,我们使用的是最新的 ejabberd 版本。

谢谢

【问题讨论】:

    标签: erlang xmpp ejabberd xmppframework


    【解决方案1】:

    XEP-0091 (Legacy Delayed Delivery) 说:

    时区被理解为UTC。

    所以你需要将时间从UTC转换为客户端的本地时间才能得到正确的结果。

    较新的规范XEP-0203 (Delayed Delivery) 还说:

    [...] 必须以 UTC 表示

    【讨论】:

    • 所以你是说没有办法像 LastActivity XEP(多少秒前)中那样更改标记值
    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多