Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/09/2011, 10:46
Avatar de DrFaust
DrFaust
 
Fecha de Ingreso: septiembre-2011
Ubicación: Buenos Aires
Mensajes: 308
Antigüedad: 12 años, 7 meses
Puntos: 87
Respuesta: Comet o Como actualizar la web en tiempo real

Hace algún tiempo programé un chat en Ajax y me enfrenté al mismo problema.

Según lo que pude investigar, los servidores web son capaces de responder a un gran número de peticiones en un periodo corto de tiempo, pero no responden bien a tener varias conexiones abiertas simultáneamente.

Lo que hice fue un cliente en JavaScript que enviaba cada 2 segundos una petición que incluía la ID del último elemento mostrado. El servidor devolvía cualquier elemento nuevo (posterior a esa ID), o nada. El periodo entre petición y petición se hacía más largo según cuánto tiempo había pasado desde la última vez que había aparecido un elemento nuevo. De este modo los canales de chat activos se actualizaban cada 2 segundos, pero un canal desierto se actualizaba cada 10.

Este intercambio requería muy poco ancho de banda: las cabeceras HTTP, y una ID de dos bytes. Nada que un servidor web no pueda manejar, incluso teniendo una buen puñado de usuarios online al mismo tiempo.