Ionic 2 - Проверяйте подключение к Интернету при каждом запросе

Я разрабатываю приложение на Ionic 2 и хочу проверять подключение к Интернету для каждого запроса, т. Е. Я хочу получать мгновенное сообщение каждый раз, когда сеть не работает или работает.

Мой простой проект будет иметь:
страница 1 - главная (кнопка для перехода на другую страницу)
страница 2 - другая страница

Для этого я использую информацию о сети плагина Cordova. Из документации ionic 2:

import {Network, Connection} from 'ionic-native';

// watch network for a disconnect
let disconnectSubscription = Network.onDisconnect().subscribe(() => {
  console.log('network was disconnected :-( ')
});

// stop disconnect watch
disconnectSubscription.unsubscribe();


// watch network for a connection
let connectSubscription = Network.onConnect().subscribe(() => {
  console.log('network connected!');    
  // We just got a connection but we need to wait briefly
    // before we determine the connection type.  Might need to wait    
  // prior to doing any api requests as well.
  setTimeout(() => {
    console.log(Network.connection);
    if (Network.connection === Connection.WIFI) {
      console.log('we got a wifi connection, woohoo!');
    }
  }, 3000);
});

// stop connect watch
connectSubscription.unsubscribe();

Проблема в том, что Network.onConnect().subscribe(() ничего не извлекает. Это лучший способ достичь моей цели?


person Goldbones    schedule 24.05.2016    source источник
comment
В качестве комментария, а не ответа, я не думаю, что сетевой плагин действительно надежен для такого рода обнаружения, поскольку ваш пользователь может быть подключен к маршрутизатору, который не имеет подключения, и только потому, что есть связь Wi-Fi. активен, плагин укажет, что существует действительное соединение. Я также работаю над решением этого вопроса.   -  person Will de la Vega    schedule 25.05.2016


Ответы (1)


Проблема с вашим кодом заключается в том, что вы вызываете метод отмены подписки после того, как подписались на изменения в сети. Если вы звоните connectSubscription.unsubscribe(), вы говорите ionic, что теперь вас не волнуют изменения в состоянии сетевого подключения. Удалите 2 метода отписки, и ваш код должен быть в порядке.

Кроме того, методы подписки и отмены подписки только прослушивают изменения, поэтому для проверки подключения используйте код сравнения напрямую.

if (Network.connection === 'wifi') {
    // do some api work
}

Дайте мне знать, если это работает.

person Naj    schedule 06.08.2016