【问题标题】:Strategy to sync offline local data with REST API after resuming connection恢复连接后将离线本地数据与 REST API 同步的策略
【发布时间】:2020-07-24 02:38:19
【问题描述】:
我有一个可在 android 上和通过浏览器使用的混合应用程序。两个客户端都使用 REST API 和 websockets。数据存储在 localStorage 中。我希望移动设备能够修改离线资源,并在连接到互联网后与API同步数据。
如何进行这样的数据对比 连接互联网后得到正确的版本?
问题场景:
- 用户拥有从手机上的 API 获取的笔记列表。
- 用户关闭互联网
- 用户使用 JWT 令牌保持登录状态。修改笔记、删除另一条笔记、添加新笔记或对笔记执行任何其他操作
- 用户打开互联网。
- 这里应该发生什么?
我对如何解决这个问题的想法:
- 创建同步端点并在接收到连接时按 updated_at 列比较集合。
- 比较对象与此utility 的差异
【问题讨论】:
标签:
rest
synchronization
offline-mode
【解决方案1】:
根据您对应用程序的期望,您可能希望实施适当的同步机制,能够处理的不仅仅是笔记列表。
简单的方法:捎带更新日期,您可以比较版本日期并决定最后写的获胜。
艰难的路:我建议你看看CRDTs。这些数据结构确保状态最终保持一致,使其非常适合您的需求。
存在许多实现,它取决于您的工具链,例如 Logux 为 javascript 提供了一些 CRDT。
您还可以依赖用于数据同步和冲突解决的数据库,例如 https://couchdb.apache.org//https://pouchdb.com/。 https://riak.com/products/riak-kv/riak-distributed-data-types/index.html?p=10947.html 还提供 CRDT 支持。
如果你想深入研究合并文本数据,我建议你看看谷歌为他们的文档应用开发的Diff-Match-Patch算法,有很多端口可用。
注意为应用实现真正的离线和同步功能绝非易事。