Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/05/2013, 02:49
Avatar de chwc
chwc
 
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 16 años, 3 meses
Puntos: 103
Respuesta: Chequear estado de una web

me quede un rato buscando la forma de hacerlo.
primero estuve viendo con XMLHttpRequest(),pero me di cuenta, que es imposible notar la diferencia entre un servidor caído y uno que no acepta cross-origin ajax requests.

así que pense, y me acorde de los WebSockets, los cuales usan el protocolo http. cuando uno hace una peticion a un servidor común y corriente, este tira un error.

Código Javascript:
Ver original
  1. var ws = new WebSocket('ws://google.com')
  2. ws.onerror = function(){
  3. alert('server activo');
  4. }
, el problema, es que no existen los timeout's. simplemente se queda esperando hasta que logre conectarse con el servidor.

asi, que podriamos hacer algo asi

Código Javascript:
Ver original
  1. function checkear(url){
  2. this.online = false;
  3. this.timeout = setTimeout(function(){
  4. alert('server inactivo');
  5. },10000); //10 segundos
  6. this.ws = new WebSocket(url);
  7. ws.onerror = function(){
  8. alert('server activo');
  9. this.onerror = undefined;
  10. this.close();
  11. }
  12. }

y despues lo ejecutamos asi
Código Javascript:
Ver original
  1. checkear('ws://google.com')

funciona un poco mal, ya que luego de decir que no logre cerrar el timeout cuando descubr que el server esta activo.
bueno de todos modos, empieza a probar
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886