Ejabberd 延迟交付时间戳
Ejabberd delayed delivery timestamp
我们使用 ejabberd 作为我们的 xmpp 服务器,iphone xmppframework 作为客户端。
问题是当我们收到离线消息时,消息中写入的时间戳实际上是 date/time 格式,但服务器的时区与客户端的时区不同,所以此时事情变得一团糟。
我们在查询用户的最后 Activity 时使用相同的方法(XEP-0012),但最后 activity xep 服务器 returns 信息为 "how many seconds ago the user last logged in to server" 所以通过这种方式我们可以将秒差应用于我们的客户时间并找到消息传递 date/time 所以最后 Activity 查询没有问题。
但是在延迟交付中,ejabberd 发送了一个准确的日期和时间值,客户对转换感到困惑(每个客户的日期和时间可能彼此相差很大)
有谁知道我们该如何解决这个问题?有什么方法可以将 ejabberd 配置为 return "seconds passed information" 直到离线消息发送?
顺便说一句,我们使用的是最新的 ejabberd 版本。
谢谢
XEP-0091 (Legacy Delayed Delivery) 说:
The timezone is be understood as UTC.
因此您需要将UTC时间转换为客户端本地时间才能得到正确的结果。
较新的规范,XEP-0203 (Delayed Delivery) 还说:
[...] MUST be expressed in UTC
我们使用 ejabberd 作为我们的 xmpp 服务器,iphone xmppframework 作为客户端。 问题是当我们收到离线消息时,消息中写入的时间戳实际上是 date/time 格式,但服务器的时区与客户端的时区不同,所以此时事情变得一团糟。
我们在查询用户的最后 Activity 时使用相同的方法(XEP-0012),但最后 activity xep 服务器 returns 信息为 "how many seconds ago the user last logged in to server" 所以通过这种方式我们可以将秒差应用于我们的客户时间并找到消息传递 date/time 所以最后 Activity 查询没有问题。
但是在延迟交付中,ejabberd 发送了一个准确的日期和时间值,客户对转换感到困惑(每个客户的日期和时间可能彼此相差很大)
有谁知道我们该如何解决这个问题?有什么方法可以将 ejabberd 配置为 return "seconds passed information" 直到离线消息发送?
顺便说一句,我们使用的是最新的 ejabberd 版本。
谢谢
XEP-0091 (Legacy Delayed Delivery) 说:
The timezone is be understood as UTC.
因此您需要将UTC时间转换为客户端本地时间才能得到正确的结果。
较新的规范,XEP-0203 (Delayed Delivery) 还说:
[...] MUST be expressed in UTC