我有一个AngularJS应用程序(嵌入在Cordova应用程序中)。 要获取和设置数据,它使用REST API(在Django后端服务器上运行)。
即使网络出现故障,我也需要该应用程序继续为多项功能工作。 例如,我期待这种行为:
在线模式
后退离线模式
你在技术上如何设计这个?似乎离线模式有很多不同的技术,这对我来说有点混乱。欢迎任何指导。
非常感谢。
答案 0 :(得分:1)
我想使用这样的应用程序,这会让我感到愚蠢。但是有
您可以使用此插件检查网络状态。
https://github.com/apache/cordova-plugin-network-information/blob/master/doc/index.md
每个请求都需要在发送HTTP POST和将POST数据保存到本地存储之间进行切换。
然后你只需要为以下事件创建回调:
document.addEventListener("offline", onOffline, false);
function onOffline() {
// Turn on saving to local storage
}
document.addEventListener("online", onOnline, false);
function onOnline() {
// Read local storage, send all requests
}
答案 1 :(得分:1)
我不确定评论中的压力是不是要做到这一点。我们正在开发的应用程序中具有此功能。
基本上,我们将iOS应用程序打包为Cordova包装的Web容器,并在应用程序中运行本地代理服务器。它将所有数据通过它传递给Web服务。如果请求失败,它会向应用程序返回一个标识符,以便您可以确定与服务器的连接已关闭,然后应用程序将请求保存到localStorage。这样,UI可以适应处于“离线模式”。稍后,一旦恢复与服务器的连接,您就可以通过代理从应用程序推送数据。该应用程序直接连接到代理而不是Web服务。
据我所知,虽然没有一个简单的库来解决这种情况,但你必须知道这些请求将如何影响在线应用程序(如果系统中的内容不同步)用户运行缓存直到以后的请求?)
但绝对可以做到这一点。