0

我正在构建在教育环境中的触摸屏上使用的应用程序。应用程序从用户输入中收集数据。然后将数据发送到服务器。有多个单元,虽然精确同步不是最重要的,但收集到的数据(以及从另一个来源收集的其他数据)将被组合并分发回触摸屏应用程序。

这些应用程序正在 Backbone 中构建,初始数据从单个 JSON 文档加载。JSON 文档是从远程 MySQL 数据库中解析的,该数据库在初始化时下载(连同资产)。

虽然在可能的情况下,应用程序应在收集到新数据后立即将其发送回远程 mySQL DB,但这可能并不总是可行的,我需要收集数据以便在可以时发送。

我的第一个想法是尽可能将所有内容存储在本地存储中并同步(每次成功同步时清除本地存储)是可行的方法。

在银行假期的周末,我一直在玩meteor.js,我想如果我写我的本地存储解决方案,我可能会重新发明轮子,而且是一个棘手的轮子。Meteor.js 似乎有一种离线模仿数据库的方法,以伪造即时更新。

我的问题是:如何使用类似的技术来添加一些离线保护?有没有我可以使用的 JS 框架或骨干插件,或者我可以利用的技术?

4

1 回答 1

1

您可以使用Backbone.localStorage将模型和集合保存到本地存储,而连接处于脱机状态。

检测您的用户是否离线就像注意到您的 xhr 请求失败一样简单。(https://stackoverflow.com/a/189443/1448860e)。

将这两者结合起来。

  1. 当您怀疑用户离线时(对后端的 ajax 请求没有得到响应),切换 Backbone.localStorage 并将所有内容存储在那里。通知用户!
  2. 当用户再次获得 Internet 连接时,将所有更改从 localStorage 保存到服务器。再次通知用户!

瞧!

于 2013-05-27T14:25:33.927 回答