如何检测脱机的 Meteor Cordova 应用程序,然后使用 GroundDB 临时存储数据直到重新联机?

How do I detect an offline Meteor Cordova app, and then use GroundDB to temp store data until back online?

这是目标:

一位农民有一个智能phone,他走进他的谷仓,用应用清点库存。有时他的phone在谷仓里没有互联网连接,所以应用程序需要离线工作,离线存储数据,然后在重新连接后将其同步到云端。

农民也应该只需要登录和注册应用程序一次,然后每次打开应用程序时,它应该只打开到主屏幕,而不会再次询问登录信息。这究竟是怎么做到的?

我正在使用 Meteor 制作应用程序,Meteor 内置于 Cordova 中以打包应用程序。我看过 GroundDB:https://github.com/GroundMeteor/db

据我在文档中所知,我知道如何创建本地集合并使用 collection.insert 将数据添加到该集合。

但我不知道如何编写应用程序代码以在不需要互联网的情况下在 phone 上打开,并检测是否存在互联网?

那如何检测网络是否恢复,然后同步离线模式下存储的所有数据?

如果有人可以帮助说明这是如何工作的,我们将不胜感激!

使用这样的代码来检测offline/online

jQuery(window).on('offline', function (e) {
    console.log('offline');
}).on('online', function (e) {
    console.log('online');
});

如果需要,您也可以将它与此插件结合使用 https://github.com/apache/cordova-plugin-network-information/blob/master/doc/index.md 以确定有关网络状态的更多信息。

对于 Meteor,您应该使用 Meteor.status(),其中 return 这种形式的对象 :

对象{状态:"connected",已连接:真,重试次数:0}

如果你失去了连接,connected 显然是 false。

它比 jQuery 或 cordova 方法更好,因为它会处理与流星服务器的连接丢失,因此服务器或网络故障不仅是互联网状态。