Te recomendaría si no tienes posibilidad de usar técnicas como comet, hacer un "poolling", es decir para leer mensajes nuevos: hacer una llamada al servidor, el servidor revisa si hay mensajes, si no los hay espera, cuando haya mensajes responde, y encadena la siguiente llamada ajax. Esto reduce mucho la cantidad de llamadas al servidor. En php y a grandes rasgos algo así:
Código PHP:
Ver originalwhile(1){
if(mensajes_nuevos()){//funcion que vea si hay mensajes
return $mensajes;//regresa los mensajes en algún formato.
}
sleep(5);// si no hay mensajes dormimos el proceso 5 o x segundos para no gastar recursos }
Cuando el cliente recibe la respuesta, vuelve a hacer otra llamada inmediatamente.
Esto te asegura un retraso máximo de 5 segundos por mensaje, considerando el tiempo en que la gente tarda en escribir o leer un mensaje (2-3 segundos) no significa demasiado tiempo.
Luego hay que ver el control de que no se caiga la conexión, por ejemplo si no hay respuesta luego de x minutos hacer otra llamada, pero eso ya es otra historia.