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
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
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
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
- Virgil's One™ (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). is a Comet implementation for streaming marketdata solutions for retail-, wholesale-, private banks and brokers
- Chat en GMail
- Meebo
- Jot Live
- APE Project is a full-featured OpenSource solution designed for Ajax Push. It includes a comet server and a Javascript Framework.
Referencias
- ↑ 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.
- ↑ «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.
- ↑ Crane, Dave; McCarthy, Phil (julio de 2008). Comet and Reverse Ajax: The Next Generation Ajax 2.0 (en inglés). Apress. ISBN 1590599985.
- ↑ a b Mahemoff, Michael (junio de 2006). «Web Remoting». Ajax Design Patterns (en inglés). O'Reilly Media. pp. 19; 85. ISBN 0596101805.
- ↑ 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.
- ↑ 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
- DojoToolkit - pionero en la implementación de Comet
- Arquitectura de software
- AJAX
- Objeto XMLHttpRequest (en inglés)
- XML-RPC
- XML
- Tutorial de XulPlanet explicando Server Push (en inglés)
- Librería en JavaScript que implemente HTTP Push, sin usar Ajax
- Asteroid (a small Comet): Implementación simple, pero funcional, en Squeak de Diego Gómez Deck