Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/08/2011, 13:08
IXtremeLT
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 13 años, 4 meses
Puntos: 32
Respuesta: Ping con JavaScript

Puedes hacer un método usando un iframe invisible, te preparé la siguiente función:

Código Javascript:
Ver original
  1. function ping( URL, FUNCION, ESPERA ) {
  2.  
  3.     if ( ! URL || typeof( FUNCION ) != "function" )
  4.         return false;
  5.  
  6.     var hay_respuesta = false,
  7.           iframe = document.createElement("iframe"),
  8.           tiempo_espera = Number( ESPERA ) || 5000,
  9.           proseguir = function () {
  10.               document.body.removeChild ( iframe );
  11.               FUNCION( hay_respuesta );
  12.           };
  13.  
  14.     with( iframe ) {
  15.         name = "iframe1";
  16.         style.display = "none";
  17.         src = URL;
  18.     }
  19.     iframe.onload = function() { hay_respuesta = true };
  20.  
  21.     document.body.appendChild( iframe );
  22.     setTimeout( proseguir, tiempo_espera );
  23.  
  24. }

Te describo la función ping:

ping ( dirección, función [, espera] )

Parámetros:
- string dirección: dirección del servidor, ya sea un enlace, IP o dominio junto con su protocolo, es decir, http://(el más común). Se hará ping a dirección.

- function función: función que se ejecutará al terminar el ping, tendrá argumentado un parámetro booleano que valida si hay o no respuesta.

- int espera: milisegundos de espera para validar la respuesta del servidor al que se hace ping, si no se póne nada el defectos será 5 segundos. Recomiendo como mínimo de 3 segundos para evitar que retorne false, siendo que probablemente haya respuesta. Todo depende de la velocidad de internet.

Ahora te pongo un ejemplo:
Código Javascript:
Ver original
  1. function z( respuesta ) {
  2.      alert( respuesta );
  3. }
  4. ping( "http://google.com", z, 4000 );
  5. // El resultado sería true.
  6.  
  7. ping( "http://g00gle.com", z, 4000 );
  8. // El resultado sería false.
Saludos.

Última edición por IXtremeLT; 27/08/2011 a las 13:16