Comet

modelo de aplicación web

En el desarrollo web, Comet es un neologismo para describir un modelo de aplicación web en el que una petición HTTP mantenida abierta permite a un servidor web enviar datos a un navegador por Tecnología Push, sin que el navegador los solicite explícitamente. Comet es un término paraguas de múltiples técnicas para conseguir esta interacción. Todos estos métodos confían en características incluidas por defecto en navegadores, como JavaScript, en lugar de sobre plugins no disponibles por defecto.

En teoría, el enfoque Comet difiere del modelo original de la web, en el que un navegador solicita una página web completa o trozos de datos para actualizar una página web. En cualquier caso, en la práctica, las aplicaciones Comet usan tradicionalmente programación AJAX con una petición prolongada para detectar nueva información en el servidor. El concepto precede al acuñamiento del neologismo, y es conocido por otros nombres, incluyendo Ajax Push,[1][2]Reverse Ajax,[3]Two-way-web,[4]HTTP Streaming[4]​ y HTTP server push,[5]​ entre otros.[6]

Antecedentes

editar

En un principio se utilizaban Java Applets con un socket TCP. Posteriormente Netscape desarrolló su propia técnica para implementar tiempo real en la web.

Normalmente una página web es entregada al cliente a petición de él mismo. Para cada petición el navegador realiza una conexión HTTP al servidor web, el servidor devuelve los datos y termina la conexión. La desventaja de este método es que para poder actualizar los datos en el cliente, el usuario o el cliente debe actualizar o cambiar de página web, lo que hace que esto tome mucho tiempo sin dejar de lado que consume mucho ancho de banda. Una solución a esto es AJAX que permite al navegador solicitar solo la parte de la página web que fue cambiada o actualizada. Esto reduce significativamente el tiempo para actualizar el contenido, sin embargo para algunas situaciones no es conveniente.

Por ejemplo en una aplicación de mensajes instantáneos que está basada sobre AJAX, para que una lista de usuarios pueda actualizarse pudiendo cambiar si un usuario se conectó o desconectó, el cliente necesita conectarse al servidor web cada cierto tiempo solicitando los cambios que hayan ocurrido, esto consume ancho de banda y tiempo.

AJAX vs Comet

editar

La diferencia que existe entre AJAX y Comet es que en este modelo se mantiene una conexión abierta entre el cliente y el servidor web; el cliente no solicita los datos, pero si envía información al servidor, y el servidor no le responde al cliente con un bloque de datos, se espera a que haya algún evento de lado del servidor para enviar la información.

Volviendo al ejemplo de la aplicación de mensajes instantáneos, el cliente no deberá estar solicitando los cambios de la lista de usuarios, el servidor web es el que le envía los datos al cliente cuando cambia la lista de usuarios, esto reduce considerablemente el consumo de ancho de banda.

Historia

editar

Alex de DojoToolkit.org fue el primero[cita requerida] en definir esta técnica, y Dojo es el primer framework[cita requerida] que implementa Comet.

Sitios usando Comet

editar

Referencias

editar
  1. Egloff, Andreas (5 de mayo de 2007). «Ajax Push (a.k.a. Comet) with Java Business Integration (JBI)» (en inglés). JavaOne 2007, San Francisco, California: Sun Microsystems, Inc. Archivado desde el original el 22 de septiembre de 2007. Consultado el 10 de junio de 2008. 
  2. «Ajax Push» (html) (en inglés). ICEfaces.org. Archivado desde el original el 25 de julio de 2008. Consultado el 21 de julio de 2008. 
  3. Crane, Dave; McCarthy, Phil (julio de 2008). Comet and Reverse Ajax: The Next Generation Ajax 2.0 (en inglés). Apress. ISBN 1590599985. 
  4. a b Mahemoff, Michael (junio de 2006). «Web Remoting». Ajax Design Patterns (en inglés). O'Reilly Media. pp. 19; 85. ISBN 0596101805. 
  5. Double, Chris (5 de noviembre de 2005). «More on Ajax and server push». Different ways of doing server push. Consultado el 5 de mayo de 2008. 
  6. Nesbitt, Bryce (1 de noviembre de 2005). «The Slow Load Technique/Reverse AJAX». Simulating Server Push in a Standard Web Browser. Archivado desde el original el 9 de mayo de 2008. Consultado el 5 de mayo de 2008. 

Enlaces externos

editar