Comment vérifier périodiquement la connexion Internet dans Phonegap?
Je suis en train de travailler avec Phonegap. J'ai besoin de vérifier la connexion réseau périodiquement. En fait j'obtiens des données à partir d'un serveur. Si il n'y a pas de connexion, j'ai besoin d'afficher une alerte d'erreur.
Je l'ai googlé et trouvé la solution. Mais il n'est pas ok. Parce que j'ai besoin pour vérifier la connexion périodiquement.
<html>
<head>
<title>navigator.network.connection.type Example</title>
<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
//Wait for PhoneGap to load
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
checkConnection();
}
function checkConnection() {
var networkState = navigator.network.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
}
</script>
</head>
<body>
<p>A dialog box will report the network state.</p>
</body>
</html>
Il vérifie uniquement la première fois au lancement de l'application. Mais j'ai besoin de vérifier régulièrement, parce que je suis en train de faire socket de programmation. Si il y a un problème avec internet, j'ai besoin de le montrer. Mais ce code ne montre au moment du lancement.
source d'informationauteur zevio rodrigues
Vous devez vous connecter pour publier un commentaire.
De travail exemple: http://jsfiddle.net/Gajotres/d5XYR/
L'utilisation de l'intervalle de minuterie pour vérifier la connexion internet de tous les temps prédéfini. Cette solution nécessite HTML5 navigateur, mais ce n'est pas un problème parce que jQuery Mobile nécessite d'ores et déjà HTML5 navigateur. Dans ce cas, le minuteur va vérifier la connexion internet toutes les 100 ms et définir résultat final dans un javascript variable globale.
Tout dépend de cette ligne:
Solution finale:
Testé sur:
Windows Firefox
Windows Google Chrome
Windows IE9 et IE10
Android 4.1.1 Chrome
iPad 3 Safari
iPad3 Chrome
Vous pourriez peut-être utiliser le "en ligne" et "hors ligne" écouteurs d'événement sur le document pour l'informer de votre Application quand elle devient en ligne ou hors ligne, comme décrit dans les docs par exemple. ici: http://docs.phonegap.com/en/3.2.0/cordova_events_events.md.html#online
Malheureusement, la réponse n'est pas stable sur Chrome et Safari, ainsi que plusieurs navigateurs mobiles. Il ne vous donne pas la "vraie connexion Internet" etat, mais plutôt la "connexion au réseau de l'état". Voir:
https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.onLine
"Dans Chrome et Safari, si le navigateur n'est pas capable de se connecter à un réseau local (LAN) ou un routeur, il est en mode hors connexion; toutes les autres conditions de retourner la valeur true. Ainsi, alors que vous pouvez supposer que le navigateur est en mode hors connexion lorsqu'il renvoie une valeur false, vous ne pouvez pas supposer que la valeur true signifie nécessairement que le navigateur peut accéder à l'internet. Vous pourriez obtenir des faux positifs, comme dans les cas où l'ordinateur est en cours d'exécution d'un logiciel de virtualisation qui a les cartes ethernet virtuelles qui sont toujours "connecté". Par conséquent, si vous voulez vraiment déterminer la ligne d'état du navigateur, vous devez développer de nouveaux moyens de vérification. Pour en savoir plus, voir le HTML5 Rocks article, le Travail Hors de la Grille."
Voir ce HTML5 Rocks article pour une véritable solution stable - plus de travail de cours:
http://www.html5rocks.com/en/mobile/workingoffthegrid/