Meteor应用程序如何脱机工作?

Ale*_*kov 52 offline meteor

这在以下情况下很有用

  • 服务器已关闭,客户端无法连接进行实时同步
  • 没有互联网连接
  • 用户不想上网但想要使用应用程序;

n1m*_*mmy 55

是! 这在大多数情况下已经在Meteor中实现.

如果与服务器的连接丢失,则客户端仍可在本地运行.数据库写入似乎在客户端上成功并立即反映在屏幕上.重新建立连接后,Meteor会将所有待处理的方法请求重新发送到服务器,并使用服务器的结果更新客户端显示.这是延迟补偿的全部结果,离线被视为服务器只是非常慢.

客户端可以监视被动"Meteor.status()"输出以查看当前连接的状态.例如,您可以使用Meteor.status来驱动弹出窗口,其中包含重新连接计时器和"立即连接"按钮,例如gmail.

编辑:当然,流星不是魔术.如果您点击"重新加载",或离开页面等,离线时您将丢失Meteor会话,并且在重新获得网络之前无法再次启动.但是,所有具有离线模式的网络应用都是如此,因此对于您的应用用户来说,这不应该让您感到意外.

  • 当连接不可用时,在LocalStorage中将脏记录存储在客户端会很有趣,以便在本地页面状态丢失的情况下可以恢复它们.我想在流星中看到这个功能.我也非常有兴趣探索在本地存储整个数据集的方法(可能作为应用程序缓存清单中的文件),以便在离线时重新打开和使用应用程序,但这是一个困难的要求. (31认同)
  • 我开发了一个库,允许你的Backbone.js应用程序使用相同的算法离线工作.https://github.com/Ask11/backbone.offline (6认同)
  • Aleksey,您的backbone.offline存储适配器是我在研究离线应用时发现的最有趣的实现之一.我有想法使用应用程序缓存清单缓存初始数据,然后只在LocalStorage中存储脏项,以绕过[2.5M字符限制](http://dev-test.nemikor.com/web-storage/support-test /)在localStorage上.我没有测试过这个想法,但你怎么看? (3认同)

rus*_*eed 13

还有另外两个选项可以解决'如果你的标签关闭,或你重新加载'问题.我还没试过,但看起来很有趣.

https://github.com/awwx/meteor-offline-data:

流星离线数据

Meteor离线数据项目的主页,实现了一个包装Meteor.Collection的"离线收集":

来自服务器的数据持久存储在浏览器数据库中,即使应用程序脱机启动,也可供应用程序使用.

用户所做的更改也会保存在浏览器数据库中,如果浏览器已关闭并重新打开,则会保留这些更改.下次应用程序联机时,更改将发送到服务器.

即使在脱机时,也会在同一应用程序上打开的浏览器窗口之间进行响应共享更新.

https://github.com/GroundMeteor/Meteor-GroundDB:

特征:

轻巧的足迹

广泛的浏览器支持Chrome,Safari,Firefox和Internet Explorer 9如果没有localstorage,则回退到正常的Meteor.Collection集合中的更改恢复方法的恢复工作脱机更新跨窗口选项卡支持SmartCollection仅支持脱机客户端数据库使用EJSON.minify和EJSON.maxify压缩localstorage中的数据将来在服务器端将有一个可自定义的冲突处理程序