- Comet
-
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] and HTTP server push[5] entre otros.[6]
Contenido
Antecedentes
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 en definir esta técnica, y Dojo es el primer framework que implementa Comet.
Sitios usando Comet
- Virgil's One™ is a Comet implementation for streaming marketdata solutions for retail-, wholesale-, private banks and brokers
- Chat en GMail
- Meebo
- Jot Live
Referencias
- ↑ Plantilla:Cite speech
- ↑ «Ajax Push» (en inglés) (html). ICEfaces.org. Consultado el 21-07-2008.
- ↑ Crane, Dave; McCarthy, Phil (July de 2008) (en inglés). Comet and Reverse Ajax: The Next Generation Ajax 2.0. Apress. ISBN 1590599985.
- ↑ a b Mahemoff, Michael (June de 2006). «Web Remoting» (en inglés). Ajax Design Patterns. O'Reilly Media. pp. 19; 85. ISBN 0596101805.
- ↑ Double, Chris (05-11-2005). «More on Ajax and server push». Different ways of doing server push. Consultado el 05-05-2008.
- ↑ Nesbitt, Bryce (01-11-2005). «The Slow Load Technique/Reverse AJAX». Simulating Server Push in a Standard Web Browser. Consultado el 05-05-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
Categoría:- Lenguajes de programación
Wikimedia foundation. 2010.