Actualmente estoy trabajando en un proyecto que entre muchos requerimientos tecnológicos está el de refrescar la pantalla del browser sin interacción del usuario, esto se puede obtener de manera mas o menos sencilla con una técnica llamada
Comet, este termino lo acuño Alex Russell quién es creador del
Dojo Toolkit, también es conocida como Reverse Ajax, HTTP Server Push, entre otros nombres.
Esta técnica se basa en una mezcla de tecnologías y estándares tales como JavaScript, JSON y Java Servlets. La idea general es abrir una sesión y suscribirse a un Servlet manteniendo de alguna manera suspendida esa conexión esperando que suceda algún evento en el servidor y avisar al browser de dicho evento, como se puede observar en el siguiente diagrama, el cuál es una versión minimalista del que se muestra en el
artículo original de Alex Russell:
Existen en la red diferentes implementaciones que soportan este modelo tales como
CometD que es un proyecto de
la Dojo Foundation,
DWR, que es una de las implementaciones con mas tiempo en el mercado, los famosos
continuations de
Jetty y los
Future Response Servlet y Abstract Asynchronous Servlet de Oracle Web Logic.
Mucha de estas son implementaciones que están acopladas a los servidores para los que fueron desarrolladas o a un a las librerías de JavaScript propias
También existe una implementación de
Jean Francois Arcand, uno de los principales desarrolladores de
Grizzly llamada
Atmosphere, que pretende ser una implementación
cross-application-server, la cual al parecer es bastante sencilla de aplicar a proyectos
legacy como nuevos.
Cabe destacar que todos estos
frameworks pueden ser parcial o totalmente reemplazados por el
suspendable request que es parte de la
especificación Servlet 3.0, ya que esta será la manera estándar de llevar a cabo el modelo Comet.
Sin embargo tomando en cuenta que falta algún tiempo para que esta especificación salga a la luz y se generalice su uso, mientras esto sucede podemos hacer uso de los
frameworks mencionados anteriormente.
Una de las preguntas que viene de inmediato a nuestras cabezas es: ¿Cuál es el mejor framework?, la respuesta correcta no existe, todos tienen ventajas y desventajas, sin embargo tenemos que evaluar cual se adecua mejor a nuestras necesidades, por ahora para mi las implementaciones de Oracle y
Atmosphere son las mas se ajustan al proyecto antes mencionado, por lo cual son en las que estaré profundizando un poco mas en artículos posteriores ;).