Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ping od strony klienta
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
davidos
Witajcie,
Chciałbym zrobić skrypt na sprawdzanie pingu od strony klienta do adresu IP, ale niestety nic nie chce mi działać, próbowałem pełno kodów ale ten zdał mi sie jakiś taki najlepszy oto on:
  1. function ping(host, port, pong) {
  2.  
  3. var started = new Date().getTime();
  4.  
  5. var http = new XMLHttpRequest();
  6.  
  7. http.open("GET", "http://" + host + ":" + port, /*async*/true);
  8. http.onreadystatechange = function() {
  9. if (http.readyState == 4) {
  10. var ended = new Date().getTime();
  11.  
  12. var milliseconds = ended - started;
  13.  
  14. if (pong != null) {
  15. pong(milliseconds);
  16. }
  17. }
  18. };
  19. try {
  20. http.send(null);
  21. } catch(exception) {
  22. // this is expected
  23. }
  24.  
  25. }


Nie wiem co to jest to pong, a port nie jest mi potrzebny więc przerobiłem ten kod tak:
  1. function ping() {
  2.  
  3. var started = new Date().getTime();
  4.  
  5. var http = new XMLHttpRequest();
  6.  
  7. http.open("GET", "http://31.6.70.154", /*async*/true);
  8. http.onreadystatechange = function() {
  9. if (http.readyState == 4) {
  10. var ended = new Date().getTime();
  11.  
  12. var milliseconds = ended - started;
  13. }
  14. };
  15. try {
  16. http.send(null);
  17. } catch(exception) {
  18. // this is expected
  19. }
  20. }


Teraz wypisuje na dole jakieś:
  1. var pinguj = ping()
  2. document.write(pinguj)

No ale nie wiem jak uzyskać ten ping smile.gif

W firebugu po lewej na dole tak fajnie się tam ten ping wyświetla, tylko jak go jeszcze wyciągnąć na stronę? Screen:


Potrafi ktoś pomóc?
motyl-pl
To co zaznaczyłeś w czerwone kółko nie ma nic wspólnego z Twoim skryptem.
Jest to czas odpowiedzi "ajaxa" bezpośrednio wyświetlany przy każdym zapytaniu przez firebuga.

Nie lepiej zrobić coś takiego że poprzez ajax'a będzie wywoływać skrypt php'a w którym zrobisz wywołanie pinga a nastepnie sobie wyświetlać ?
W PHP'ie na pewno więcej rozwiązań jest, jak np. http://stackoverflow.com/questions/9841635...r-port-with-php
davidos
No tamto co mi podesłałeś to jest PHP, ale ma to php ma się wykonać po stronie klienta przez ajax`a yyy..?
No wezmę ten skrypt
  1. // Function to check response time
  2. function pingDomain($domain){
  3. $starttime = microtime(true);
  4. $file = fsockopen ($domain, 80, $errno, $errstr, 10);
  5. $stoptime = microtime(true);
  6. $status = 0;
  7.  
  8. if (!$file) $status = -1; // Site is down
  9. else {
  10. fclose($file);
  11. $status = ($stoptime - $starttime) * 1000;
  12. $status = floor($status);
  13. }
  14. return $status;
  15. }
  16.  
  17. $ping = pingDomain(wp.pl);
  18. echo $ping;


No ale że jak przez ajax, bo nie bardzo wiem jak to zrobić ;x Nie ma gdzieś już jakiegoś takiego sklejonego skryptu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.