Ich möchte einen JavaScript-Code ausführen, um 4 verschiedene IP-Adressen zu pingen und dann den Paketverlust und die Latenz dieser Ping-Anfragen abzurufen und sie auf der Seite anzuzeigen.
Wie mache ich das?
Sie können dies nicht von JS aus tun. Was Sie tun könnten, ist dies:
%Vor%Machen Sie eine AJAX-Anfrage an Ihren Server, der dann die Zielserver anpingt und das Ergebnis im AJAX-Ergebnis zurückgibt.
Mögliche Vorbehalte:
Die einzige Methode, an die ich denken kann, ist das Laden von z. eine Image-Datei vom externen Server. Wenn dieser Ladevorgang fehlschlägt, "wissen" Sie, dass der Server nicht reagiert (Sie wissen es tatsächlich nicht, weil der Server Sie gerade blockieren könnte).
Sehen Sie sich diesen Beispielcode an, um zu sehen, was ich meine:
%Vor%Am nächsten kommst du in JS zu einem Ping, indem du AJAX verwendest und die Ready-Status, den Status und die Header abrufst. Etwas wie das:
%Vor%Natürlich können Sie auch Bedingungen für verschiedene HTTP-Status eingeben und die Ausgabe so gestalten, wie Sie wollen, mit Beschreibungen usw., damit sie schöner aussieht. Mehr von einem http URL Status Checker als ein Ping, aber die gleiche Idee wirklich. Sie können es immer ein paar Mal wiederholen, damit es sich für Sie auch wie ein Ping anfühlt:)
Ich wurde von dem letzten Kommentar inspiriert, also schrieb ich diesen schnellen Code.
Dies ist eine Art von „HTTP ping“, die ich denken kann sehr nützlich sein, mit XMLHttpRequest Anrufen zu verwenden, entlang (), zum Beispiel, um herauszufinden, was der schnellste Server ist in einigen Fällen zu verwenden, oder einige groben Statistiken zu sammeln die Internetverbindungsgeschwindigkeit des Benutzers.
Diese kleine Funktion stellt nur eine Verbindung zu einem HTTP-Server auf einer nicht vorhandenen URL her (die 404 zurückgeben soll), misst dann die Zeit, bis der Server die HTTP-Anfrage beantwortet, und führt einen Durchschnitt ein die kumulierte Zeit und die Anzahl der Iterationen.
Die angeforderte URL modifiziert Als Crossover bei jedem Aufruf, da ich bemerkt habe, dass (wahrscheinlich) einige transparenten Proxies oder Caching-Mechanismen, wo fälschen Ergebnisse in einigen Fällen geben zusätzlichen schnelle Antworten (schneller als ICMP eigentlich die etwas komisch).
Achten Sie darauf, FQDNs zu verwenden, die zu einem echten HTTP-Server passen! Die Ergebnisse werden einem Körperelement mit der ID "result" angezeigt, zum Beispiel:
%Vor%Funktionscode:
%Vor%Starten Sie zum Beispiel mit:
%Vor%Beachten Sie, dass ich keine einfache Korrelation zwischen den Ergebniszahlen dieses Skripts und dem ICMP-Ping auf den entsprechenden Servern finden konnte, obwohl die HTTP-Antwortzeit aus der ICMP-Antwortzeit grob exponentiell zu sein scheint. Dies kann durch die Menge an Daten erklärt werden, die über die HTTP-Anfrage übertragen werden, die je nach Geschmack und Konfiguration des Webservers variieren kann, offensichtlich die Geschwindigkeit des Servers selbst und wahrscheinlich andere Gründe.
Das ist kein sehr guter Code, aber ich dachte, es könnte helfen und möglicherweise andere inspirieren.
Ist es möglich, einen Server von Javascript zu pingen?
Sollte die obige Lösung überprüfen. Ziemlich glatt.
Natürlich nicht von mir, aber ich wollte das klarstellen.
Tags und Links javascript ping latency