Comet y el HTML5

Uno de los problemas con los que nos enfrentamos al intentar desarrollar una aplicación en Comet es que hay que simularlo, ya que los navegadores aún no admiten la posiblidad de recibir información directamente del servidor (push). En la especificación de HTML5 nos encontramos con los eventos enviados por el servidor (server sent events) y el elemento event-source, el cual representa el destino de los eventos producidos por el servidor.

El elemento event-source tiene el atributo src que indica la URL que se procesará, la cual se llamará una vez el elemento haya sido añadido al documento. Para poder recibir la información, el Content-type de la respuesta debe ser application/x-dom-event-stream, teniendo un formato parecido a:

Event: test
Target: p
data: data

Un ejemplo de código para el cliente sería el siguiente:

<p>It should say "PASS" below:</p>
<p id="p">FAIL (script did not run)</p>
<script>
document.addEventListener("click", update, false)
function update(e) {
pass = e.target.id == "x"
document.getElementById("p").firstChild.data = pass ? "PASS" : "FAIL"
}
</script>
<event-source src="support/sse-target.php?target=p&event=click" onclick="update(event)" id="x">

Por ahora solo está implementado en Opera, aunque otros navegadores ya están trabajando en ello. Esperemos que se vuelva un elemento común en todos los navegadores para poder desarrollar aplicaciones web mucho más interesantes.

Más información