用于检测应用程序是否在angularjs

时间:2016-02-10 13:29:22

标签: angularjs http-caching angular-http-interceptors

我正在寻找一个很好的解决方案来检测我的应用中的开启/离线状态。 navigator.onLine apprache无法正常工作,至少对于当前版本的chrome,我认为不可靠。 应用程序位置和服务器端点可能不同,所以我真正想要的是检查服务器是否脱机。如果用户可以使用google.com,我不介意。只要服务器在网络中并响应,该应用程序甚至可能在没有互联网的情况下工作。

我的方法是使用拦截器:

$provide.factory('httpOfflineCheckInterceptor', ['$q', '$rootScope', function($q, $rootScope){
    return {
        'response': function(response) {
/** what am I missing here? **/
            return response;
        },
        'responseError': function(rejection) {
            if(rejection.status === -1) {
                $rootScope.appIsOffline = true;
            }
            return rejection;
        }
    }
}]);

$httpProvider.interceptors.push('httpOfflineCheckInterceptor');

因此,对于每个http请求,我检查响应。检测应用程序是否处于脱机状态正常。 棘手的是,检查应用程序是否再次联机。 '响应',我确实缓存了http请求。即使我处于离线状态,某些响应的状态仍为200,因为它们是缓存的。因此,在检查应用程序是否再次联机时,应忽略缓存的请求或获取模板。

0 个答案:

没有答案