Pinger les serveurs à partir de JavaScript : une surveillance du réseau basée sur un navigateur
Utiliser le ping comme outil de surveillance du réseau est une pratique courante, et c'est souvent utilisé pour vérifier la disponibilité des serveurs distants. Bien que les commandes ping traditionnelles puissent être exécutées à partir de la ligne de commande, cette approche présente des limites, telles que des temps de chargement de page plus longs.
Pour optimiser les performances de la page, envisagez d'exécuter le processus ping du côté de l'utilisateur. Cela permet un chargement plus rapide des pages pendant que les utilisateurs attendent l'état de disponibilité des serveurs. Cependant, cela pose la question : est-il possible d'envoyer un ping aux serveurs à partir de JavaScript ?
Implémentation d'un ping JavaScript
La solution fournie exploite l'objet Image en JavaScript pour y parvenir. tâche. L'extrait suivant illustre la fonctionnalité de base :
function Pinger_ping(ip, callback) { if(!this.inUse) { this.inUse = true; this.callback = callback this.ip = ip; var _that = this; this.img = new Image(); this.img.onload = function() {_that.good();}; this.img.onerror = function() {_that.good();}; this.start = new Date().getTime(); this.img.src = "http://" + ip; this.timer = setTimeout(function() { _that.bad();}, 1500); } }
Le script utilise la fonctionnalité de chargement asynchrone de l'objet Image. Si l'image se charge avec succès (indiquant la disponibilité du serveur), l'événement onload est déclenché. A l’inverse, si l’image ne parvient pas à se charger (indiquant une indisponibilité du serveur), l’événement onerror est déclenché. Cette méthode contourne efficacement les restrictions du navigateur sur les commandes ping directes tout en conservant la possibilité de déterminer la disponibilité du serveur.
Solutions alternatives et mises en garde
Bien que cette solution ait été signalée comme fonctionnant dans Différents types de serveurs et ports, il est important de noter que la fiabilité de cette implémentation peut varier. De plus, Chrome peut ne plus prendre en charge cette méthode, ce qui pourrait entraîner une erreur net::ERR_NAME_NOT_RESOLVED.
Si vous rencontrez ces problèmes, envisagez d'explorer des solutions alternatives, telles que celle disponible sur https://github.com /jdfreder/pingjs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!