网络应用、离线模组和同步

Posted

技术标签:

【中文标题】网络应用、离线模组和同步【英文标题】:Web application, offline mod & synchronisation 【发布时间】:2016-07-04 23:58:12 【问题描述】:

在我们学习的最后一年,我们是一个由 6 名学生组成的小组。 我们必须在现有的 Web 应用程序上添加新功能。以下是最重要的特性之一,在我们看来也是最难实现的特性之一:Web 应用程序即使在离线时也必须能够正常运行。 至于,您必须能够查阅数据,对数据进行更改,并且当您的设备能够再次连接时,应用程序必须尝试与在线数据库同步。当前应用程序使用以下技术:apache tomcat/mysql/Hibernate/JavaEE/javascript/Ajax/xhtml & HTML5。

考虑到将使用该应用程序的主要设备主要是数字平板电脑、智能手机(windows 和 android,暂时不是 ios)和 windows PC;我的主要问题是以下一个:

你怎么能做这种事?

我做了一些研究,似乎您必须做一个“第二个”应用程序,它将主要使用 HTML5 在离线时查询数据,并使用 JavaScript 来控制用户正在做什么以及他可以做什么。但是我们不知道同步。似乎 SQLite 也可以使用

我知道这是一个普遍的问题,但我们正处于尝试确保每个人都了解接下来的步骤的阶段。感谢您的帮助和解释。

【问题讨论】:

嗯,我也在寻找相同的,但在我的情况下,技术堆栈是 php mysql。 javascript中有一个service worker,你看了吗? 【参考方案1】:

解决方案 1:自定义解决方案

有 api 可用于在本地存储数据,称为 javascript 中的 indexDb,这可能有助于存储数据。

对于同步,我发现服务人员可能会有所帮助。

解决方案 2:现成的工具

您也可以尝试pouchdb,但为此我认为在服务器端您必须使用 apache couchdb 数据库。我没用过,但想试试这个。

【讨论】:

【参考方案2】:

看看Service-Worker API。 Service Worker 是一个可编程的网络代理,允许您控制来自页面的网络请求的处理方式。这是继App Cache 之后为用户提供离线体验的下一代。 Service Worker - 结合本地存储甚至更好的 WebSQL 或像 localforage 这样的 polyfill 可能是实现这种应用程序的一种方式。

缺点:Service-Worker 需要 SSL,没有办法。其次,只有最新的 chrome 和 firefox 支持这些技术。

您可以将 PWA 渐进式 Web 应用程序作为关键字查找,它描述/使用了这种技术。

【讨论】:

以上是关于网络应用、离线模组和同步的主要内容,如果未能解决你的问题,请参考以下文章

如何使用离线数据 + 同步创建原生 ios 应用

移动离线同步

多表离线同步 Xamarin.Forms & Azure

在应用程序中离线同步的最佳想法

Firebase 离线支持:在用户离线时上传帖子,当用户在 iOS Swift 应用程序中在线时同步

当应用有互联网连接时,将离线核心数据与服务器同步