IM 即时通讯应用 接收消息时序问题

2023-08-24 11:08:00 +08:00
 rcj6056

IM 即时通讯应用 关于 APP 端消息接收时序的问题 场景: A-> 发消息到服务器->服务器推送到 B A 是早上 8:00 发的消息 B 是下午 18:00 登录的 接收到服务端推送的消息

那么这个时候

在 B 的手机上第一条消息会显示一个时间 这个时间用 A 消息的发送时间 还是用 B 消息的本地时间

9320 次点击
所在节点    Android
24 条回复
dudubaba
2023-08-24 21:37:59 +08:00
@rcj6056 服务器时间肯定是对的,那就是 A 发送后服务器收到消息,记录时间戳入库。然后等 B 上线后,触发了用户的上线订阅,然后开始拉取 B 的对应漫游消息,再推送给 B ,这个漫游消息的时间戳就是 A 发送时服务器记录的,此时会再次上传消息给服务器,告诉服务器已读(由客户端根据设备视窗实现),服务记录已读字段时间戳。
layxy
2023-08-25 08:50:58 +08:00
一切以服务器时间为准,否则 A 或则 B 修改本地时间可能出现时间错乱
wkong
2023-08-25 09:26:50 +08:00
既不是 A 消息的发送时间,也不是 B 消息的接受时间,是服务器收到 A 消息的时间。

看我的 Github ,我们专业做 IM 的。
Loitus
2023-08-25 12:15:12 +08:00
参考下 lamport 逻辑时钟,用服务器时间也是不对的,A 用户发消息 A B C ,可能到达服务器的时候 A B C 三条消息就乱序了 但是这三条消息有顺序的语意逻辑关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/967894

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX