恢复连接后使用REST API同步离线本地数据的策略

Jan*_*szO 7 rest synchronization offline-mode

我有一个混合应用程序,可以在 Android 上通过浏览器使用。两个客户端都使用 REST API 和 websockets。数据存储在localStorage中。我希望移动设备能够修改离线资源,并在连接到互联网后将数据与API同步。

如何在连接互联网后进行这样的数据比较并得到正确的版本?

问题场景:

  1. 用户拥有从手机上的 API 获取的笔记列表。
  2. 用户关闭互联网
  3. 用户使用 JWT 令牌保持登录状态。修改注释、删除另一注释、添加新注释或对注释执行任何其他操作
  4. 用户打开互联网。
  5. 这里应该发生什么?

我对如何解决这个问题的想法:

  • 创建同步端点并通过Updated_at比较集合在收到连接时
  • 使用此实用程序比较对象的差异

M. *_*rdy 6

根据您对应用程序的期望,您可能希望实现一个能够处理多个笔记列表的适当同步机制。

简单的方法:根据更新日期,您可以比较版本日期并确定最后写入的内容获胜。

困难的方法:我建议您看看CRDT。这些类型的数据结构确保状态最终一致,使其非常适合您的需求。存在许多实现,这取决于您的工具链,例如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 支持。

如果您想深入研究合并文本数据,我建议您查看Google 为其文档应用程序开发的Diff-Match-Patch算法,有许多端口可用。

请注意,为应用程序实现真正的离线和同步功能绝非易事。


小智 2

我找到了一个制作离线第一个移动应用程序的教程,其中讨论了使用同步设施制作离线应用程序的一些最佳实践。请参阅下面的教程链接,让我知道是否有帮助。

如何使您的应用程序可以离线使用