2011-05-17 13 views
5

Tengo un chat en mi sitio web y necesita enviar muchas solicitudes AJAX a mi servidor (al menos 2 veces por segundo) para verificar si hay mensajes nuevos.
¿Hay alguna forma de reducir el número de solicitudes y volver a cargar mensajes solo después de que se hayan publicado?
Sé que no hay posibilidad de usar sockets (porque no puedo usar flash, java o funciones de HTML5), pero tal vez hay algún truco relacionado con mantener vivo opción de HTTP 1.1?Cómo reducir un número de solicitudes AJAX para un chat?

+1

Use socket.io;) que usa websockets y degrada a Ajax si los websockets no están disponibles. – Raynos

Respuesta

6

Sí, hay una manera fácil de hacerlo. Efectivamente, lo que hace es aumentar el tiempo de espera para su llamada ajax a un tiempo de espera largo (por ejemplo, 5 minutos). Su servidor recibe la solicitud y luego la retiene, ocasionalmente buscando nuevas respuestas. Luego, cuando se justifica una nueva respuesta, simplemente responde a la solicitud y su cliente recibe la actualización.

Si no se responde en 5 minutos, su cliente simplemente expira y comienza una nueva solicitud de AJAX. Su servidor, si no ha respondido en 5 minutos, generalmente termina la solicitud retenida para que salga de la cola.

Efectivamente 'empujando hacia el lado del servidor'.

+0

Guau, ¡esta es una muy buena técnica! – tsds

+1

Cualquier enlace que pueda proporcionar para ejemplos Tejs? – JClaspill

+1

No hay enlaces, pero debería ser bastante fácil de hacer en su servidor web de elección. Los ayudantes de jQuery ajax facilitan establecer un tiempo de espera prolongado. – Tejs

Cuestiones relacionadas