El archivo util.js
que utiliza el ejercicio se incluye en el archivo ZIP de la solución completa.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejercicio 20 - Monitorizar</title>
<script type="text/javascript" src="util.js"></script>
<script type="text/javascript">
var nodos = [{"nombre": "Google", "url": "http://www.google.com"}, {"nombre": "Yahoo", "url": "http://www.yahoo.com"},
{"nombre": "MSN", "url": "http://www.msn.com"}, {"nombre": "eBay", "url": "http://www.ebay.com"},
{"nombre": "YouTube", "url": "http://www.youtube.com"}, {"nombre": "Flickr", "url": "http://www.flickr.com"}];
var intervalo;
function monitoriza() {
intervalo = setInterval(monitorizaNodos, 1000);
}
function detiene() {
clearInterval(intervalo);
}
function monitorizaNodos() {
for(var i=0; i<nodos.length; i++) {
document.getElementById("nodo"+i).style.border = "3px solid #000000";
var ping = new net.CargadorContenidosCompleto(nodos[i].url, procesaPing, noDisponible, "HEAD");
}
}
function procesaPing() {
if(new Date(this.req.getResponseHeader("Date"))) {
var numeroNodo = calculaNumeroNodo(this.url);
document.getElementById("nodo"+numeroNodo).style.border = "3px solid #00FF00";
document.getElementById("nodo"+numeroNodo).className = "on";
document.getElementById("datos"+numeroNodo).innerHTML = this.req.getResponseHeader("Server");
}
}
function noDisponible() {
var numeroNodo = calculaNumeroNodo(this.url);
document.getElementById("nodo"+numeroNodo).style.border = "3px solid #FF0000";
document.getElementById("nodo"+numeroNodo).className = "off";
}
function calculaNumeroNodo(url) {
for(var i=0; i<nodos.length; i++) {
if(nodos[i].url == url) {
return i;
}
}
}
window.onload = function() {
// Crear elemento de tipo <div> para mostrar cada uno de los nodos
for(i=0; i<nodos.length; i++) {
var nodo = document.createElement("div");
nodo.id = "nodo"+i;
nodo.innerHTML = "<strong>" + nodos[i].nombre + "</strong><br>" + nodos[i].url + "<span id=\"datos"+i+"\"></span>";
document.getElementById("mapa_red").appendChild(nodo);
document.getElementById("nodo"+i).className = "normal";
}
// Establecer los eventos en los botones
document.getElementById("monitoriza").onclick = monitoriza;
document.getElementById("detiene").onclick = detiene;
}
</script>
<style type="text/css">
body {font-size:14px; font-family:Arial, Helvetica, sans-serif;}
.normal, .consulta, .on, .off {width: 140px; text-align: center; margin: .5em; padding: .5em; }
form {display: inline; }
.normal {background-color: #FFFFFF; border: 3px solid #C0C0C0;}
.consulta {border:3px solid #000000;}
.on {background-color: #00CC00; border: 3px solid #00FF00;}
.off {background-color: #CC0000; border: 3px solid #FF0000;}
#mapa_red {border:5px solid #D0D0D0; float: left; padding: 1em 0; margin: 1em 0; width: 50%;}
#mapa_red div { float: left; margin: 1em; height: 5em; width: 35%;}
div span {display:block; padding:.3em;}
</style>
</head>
<body>
<h1>Consola de monitorización</h1>
<form>
<input type="button" id="monitoriza" value="Monitorizar"></input>
<input type="button" id="detiene" value="Detener"></input>
</form>
<div id="mapa_red"></div>
</body>
</html>
Descargar ZIP con la solución completa