Я разрабатываю приложение, в котором хочу динамически загружать контент (JSON) с моего сервера. Перед началом загрузки я хочу проверить, подключено ли устройство к сети и доступен ли мой сервер.
С помощью Cordova очень легко получить информацию о сети (WiFi
, Cellular
, None
, ...). Но я обнаружил проблему с сетями WiFi, которым требуется VPN-соединение. Без VPN Cordova возвращает WiFi
, но приложение не может подключиться к серверу. Как я могу проверить, доступен ли сервер?
Я использую Cordova с Ionic Framework (который использует AngularJS) и функцию $http
AngularJS для загрузки моих данных.
Вот моя текущая служба isOnline()
:
function() {
var is_online;
var network_state = navigator.connection.type;
return ((network_state == 'unknown') || (network_state == 'none')) ? false : true;
}
Вот как я загружаю данные:
if(isOnline()) {
var url = 'http://domain.com/file.json';
$http({
method: 'GET',
url: url
})
.success(function(data, status, headers, config) {
// save data
})
.error(function(data, status, headers, config) {
// error
});
}
К сожалению, функция загрузки не переходит в функцию ошибки, если сервер недоступен.
Большое спасибо за Вашу помощь!