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 originalvar ws = new WebSocket('ws://google.com')
ws.onerror = function(){
alert('server activo');
}
, 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 originalfunction checkear(url){
this.online = false;
this.timeout = setTimeout(function(){
alert('server inactivo');
},10000); //10 segundos
this.ws = new WebSocket(url);
ws.onerror = function(){
alert('server activo');
this.onerror = undefined;
this.close();
}
}
y despues lo ejecutamos asi
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