我正在构建在教育环境中的触摸屏上使用的应用程序。应用程序从用户输入中收集数据。然后将数据发送到服务器。有多个单元,虽然精确的同步不是最重要的,但收集的数据(以及从其他来源收集的其他数据)将被合并并分发回触摸屏应用程序。
应用程序是在Backbone中构建的,初始数据是从单个JSON文档加载的。JSON文档从远程MySQL数据库解析,在初始化时下载(连同资产一起)。
在可能的情况下,应用程序应该将新数据发送回远程mySQL DB,一旦它被收集,这可能并不总是可能的,我需要收集数据,以便在我可以的时候发送它。
我的第一个想法是将所有内容存储在本地存储并尽可能同步(每次成功同步发生时清除本地存储)是要走的路。
在银行假期周末,我一直在玩meteor.js,我想也许如果我写我的本地存储解决方案,我将重新发明轮子,一个棘手的轮子。似乎Meteor.js有一种模仿离线数据库的方法,以伪造即时更新。
我的问题是:我如何使用类似的技术来添加一些离线保护?是否有一个JS框架,或骨干插件,我可以利用,或一种技术,我可以进入?
您可以使用Backbone。当连接离线时,将您的模型和集合保存到本地存储。
检测用户是否离线就像注意到xhr请求失败一样简单。(https://stackoverflow.com/a/189443/1448860e) .
将两者结合。
- 当您怀疑用户离线(ajax请求到您的后端没有得到响应),切换骨干。localStorage并将所有内容存储在那里。通知用户!
- 当用户再次获得互联网连接时,保存从localStorage到服务器的任何更改。再次通知用户!
瞧!