Javascript: Vérifier si le serveur est en ligne?
Quel est le moyen le plus rapide pour vérifier si mon serveur est en ligne via le JavaScript?
J'ai essayé les AJAX:
function isonline() {
var uri = 'MYURL'
var xhr = new XMLHttpRequest();
xhr.open("GET",uri,false);
xhr.send(null);
if(xhr.status == 200) {
//is online
return xhr.responseText;
}
else {
//is offline
return null;
}
}
Le problème est, il ne revient jamais si le serveur est hors ligne. Comment puis-je définir un délai d'attente de sorte que, si elle n'est pas de retour après un certain laps de temps, je peux supposer que c'est en mode hors connexion?
- qu'en est
xhr.status == 500
pour vérifier la disponibilité?
Vous devez vous connecter pour publier un commentaire.
XMLHttpRequest
n'a pas de travail inter-domaine. Au lieu de cela, je voudrais charger un petit<img>
que vous attendez de revenir rapidement et de regarder leonload
événement:Edit: Nettoyage de ma réponse. Un
XMLHttpRequest
solution est possible sur le même domaine, mais si vous voulez juste tester pour voir si le serveur est en ligne, l'img charge solution est la plus simple. Il n'y a pas besoin de jouer avec des délais d'attente. Si vous voulez rendre le code ressemble, il est synchrone, voici un sucre syntaxique pour vous:onerror
, car cela permettra d'exécuter lorsque l'image n'existe pas: jsfiddle.net/8ZP9ronerror
suggestion! Je vais mettre à jour ma réponse.img.style.display = "none";
img
façon pouvons-nous avoir le mauvais résultat si l'image demandée a été mis en cache par le navigateur?img.src = "http://example.com/ping.gif?" + Date.now()
.Voici comment j'ai réalisé la vérification de la disponibilité du serveur à l'aide de Fetch pour gérer la demande et AbortController pour gérer un dépassement de délai dans un Node.js application.
JS:
Utiliser un
XMLHttpRequest
, puis vérifier si elle a échoué. Vous ne savez pas si ce serait le travail de la croix-domaine si.Faire un appel ajax et sa suite nous le dira.