前段时间写了一个浏览器扩展,详见: https://www.v2ex.com/t/1076581?p=1#reply25
有一个痛点,因为所有消息都储存在本地,导致无法接收离线消息,例如:
现在有 UserA 、UserB 、UserC 、UserD 4 个用户,A 、B 、C 在线,D 离线
时间点 1:UserA 、UserB 、UserC 三个用户聊天,产生 3 条信息 “message-1-A, message-1-B, message-1-C”
时间点 2:UserC 离线退出聊天,UserA 与 UserB 继续聊天,产生 2 条信息:“message-2-A, message-2-B”
时间点 3:UserC 、UserD 上线加入聊天,那么此时,时间点 1 和时间点 2 的聊天信息需要同步给 UserC 和 User D
UserA 、UserB 拥有所有信息记录 5 条, 无需同步
UserC 本地记录 3 条,需要同步时间点 2 ,同步 2 条
UserD 本地无记录,需要同步时间点 1+2 同步 5 条
如上,我了解一些分布式同步的解决方案,etcd 、raft 等,奈何太菜看得一脸懵逼,上手太复杂 目前想到的解决方案就是,A 、B 、C 、D 广播自己所有的消息记录,然后各自接收,通过消息的时间戳 Diff, 然后同步时根据 Diff 出的差值,追加或插入。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.