miércoles, 28 de enero de 2009

Comet o Reverse AJAX, o como más os guste llamarlo...

Muy buenas :), una vez mas vuelvo a escribir para hablar de algún tema que ha suscitado mi interés (la verdad es que tengo varios para escribir y demasiado poco tiempo :P).
El caso es que una vez un amigo mío me comentó que había salido algo que era como AJAX pero en versión push, antes una aclaración, una conexión pull es que tu tiras de los datos hacia tí de algún modo (en el caso de AJAX tu naveador hace una petición y el servidor en base a eso da una respuesta), y con una push es que el servidor te manda información (la empuja) cuando ocurra algún evento interno suyo o necesite dar algún tipo de información.
Pues he estado buscando y resulta que el inventillo, obviamente, existe y se llama Comet y como no, lleva ya un tiempo existiendo...
Básicamente Comet se basa en la idea de que, a diferencia de AJAX para el que cada vez que quieres recibir datos, debes hacer una petición. Con Comet la cosa cambia, funciona de modo que haces una petición de tipo multipart, que lo que significa es que se va a abrir un canal de comunicación que va a ir recibiendo el dato en varias partes, por lo que no se cierra y para lo cual el servidor tiene la posibilidad de ir enviando datos a cascoporro.
Esta técnica de programación tiene cabida en muchas salidas en el mundo de la comunicación por Internet, desde programas de chat, como el Google Talk para el que ya no tienes que ir mandando peticiones para ver si alguien ha escrito algo, también para servidores de correo en los que pasa parecido a los programas de chat, sistemas de estadísticas en tiempo real, sistemas para ver el estado de los servidores... y un sinfín de utilidades.
He encontrado un esquema de comunicación comparando AJAX y Comet, se nota la disminución de peticiones y, por lo tanto, de ancho de banda así como de sobrecarga del navegador por la eliminación de timers, podéis hacer click en él para verlo en grande.
Si queréis probarlo (yo aún no lo he hecho, escribiré un post con las pruebas que haga), el Toolkit de Dojo lo implementa.

2 comentarios:

  1. Gracias por tu articulo. Realmente apenas acabo de enterarme de esta tecnica, justo leí sobre ella porque estaba buscando hacer un Chat con Ajax mediante JQuery, y me tope con un comentario sobre el FaceBook donde se mencionó sobre la eficiencia de Comet.

    ResponderEliminar
  2. hola kumda, perdona que no contestase antes, es que no me avisa el sistema cuando alguien me manda un comentario...
    La verdad es que es muy interesante, ya se puede evitar el poner un timer en javascript para ir comprobando si hay alguna novedad o no, a la vez en el servidor también se salva la carga de tener que mirar, para X peticiones, que se puedan hacer en un tiempo (digamos un minuto), para comprobar si ha cambiado algo (como la típica galletita que sale para decir que tienes un correo nuevo)..
    Tengo que experimentar con esto para ver cuán fácil o difícil es.. posterior inclusión de experiencias en el blog claro.. :)

    ResponderEliminar