Sondear (refrescar) a largo plazo con javascript jquery / jquery javascript long polling


Si queremos refrescar el contenido de una pagina web cada cierto tiempo hacemos

<meta http-equiv="refresh" content="5"/>

Pero si queremos refrescar sólo un div y queremos estar seguros de que el refresco se realice incluso después de que falle alguna de las peticiones, podemos hacer:

$(document).ready(function(){
function doPoll() {
$.post('/pagina/').done(function(data) {
$('#contenedor').html(data);
}).always(function() { setTimeout(doPoll, 5000); });
}
doPoll();
});



Nótese el empleo de always que es una manera elegante de no tener que pelearnos con la posibilidad de que falle una de las peticiones y el div se quede sin refrescar.