Nano Hash - криптовалюты, майнинг, программирование

Cordova / AngularJS / Ionic: проверьте, доступен ли онлайн и домен

Я разрабатываю приложение, в котором хочу динамически загружать контент (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
    });
}

К сожалению, функция загрузки не переходит в функцию ошибки, если сервер недоступен.

Большое спасибо за Вашу помощь!


Ответы:


1

В вашем случае с WiFi/VPN я бы сказал, что функция ошибки не срабатывает, потому что ваш $http все еще пытается получить данные и не знает, что VPN препятствует этому.

Вы ждали какое-то время, пока истечет тайм-аут? Попробуйте указать в целях отладки низкое значение тайм-аута и проверьте, вызывается ли затем функция ошибки.

16.10.2014
  • Спасибо за Ваш ответ. Проблема в том, что функция успеха вызывается немедленно. 26.10.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..