05 enero, 2009

UniversalComet, el navegador como servidor

Malte Ubl ha creado UniversalComet, una prueba conceptual de una implementación de Comet (con una petición continua (polling) JSON-P (javascript callback) entre dominios) usando para ello Google App Engine (se usa un polling tradicional porque App Engine no permite conexiones prolongadas y hace un timeout). En este caso, el servidor de la página no es el mismo que el que ofrece el servicio de conexión Comet.

Cada página abierta recibe un identificador único que se utiliza con el fin de recibir las comunicaciones de forma unívoca. La propiedad window.name se usa para almacenar dicho ID. UniversalComet forma parte de Joose, un sistema de meta objetos para Javascript. La librería Dojo ofrece características similares aunque Joose está más enfocada en este tipo de características y funciona con otras librerías como jQuery. La técnica usada en este ejemplo hace uso de otra descrita en este blog hace unas semanas.

Demo incrustada:
* puedes abrir más ventanas para comprobar como los mensajes emitidos en cualquier de ellas se reciben por todas las demás...

Cada página abierta mantiene una conexión con el servidor para recibir actualizaciones (necesarias para un chat o una web de información sobre valores de bolsa). Si Google Gears está disponible (aunque no es necesario para que funcione), se usa una única conexión a nivel de navegador. El código es realmente sencillo:

// es necesario cargar primero la librería:
// <script type="text/javascript" src="http://universal-comet.appspot.com/static/client-server-mini.js"></script>

var server = new Addressable.Server();
 
server.onmessage = function (message) {
  alert(message)
}
 
server.connect(function (id, url) {
  // send url to you server using AJAX
})

Publicar un comentario en la entrada

Últimos links en indiza.com