A juzgar por los comentarios a otras respuestas que voy a decir por qué, y un poco de qué, pero no le dan una solución porque veo un montón de soluciones en la barra lateral "Relacionada". Tendrá que elegir la correcta y al conocer "el por qué" podrá tomar una decisión informada.
Para que el chat se sienta bien, tiene que haber algo de inmediato en las respuestas. Un retraso de un segundo en el tiempo será notable para los usuarios a lo largo del tiempo y dará una sensación de falta de sentido. Para que las respuestas inmediatas o en "tiempo real" funcionen en un navegador, se requiere una conexión constante para que, cuando entre nueva información, se muestre inmediatamente.
Las conexiones persistentes en los navegadores son difíciles debido a las especificaciones de solicitud/respuesta de HTTP. Existen especificaciones en el trabajo para traer conexiones persistentes a los navegadores, pero esos navegadores no son ubicuos. En el futuro, las conexiones persistentes serán suministradas por WebSockets y SPDY, las cuales están disponibles en las últimas versiones de Chrome, Safari y Firefox con IE un poco rezagado.
Otra opción para las conexiones persistentes es XMPP. XMPP es el protocolo utilizado para el cliente de chat Jabber. Como se trata de una implementación de código abierto, se ha adaptado a muchos otros usos. Existen bibliotecas JavaScript que le permiten conectar un navegador a un socket XMPP y escuchar nuevos mensajes. El método que he visto en el pasado es enviar los mensajes al servidor web, y luego hacer que el servidor web le informe al servidor XMPP sobre el nuevo mensaje que luego transmite el nuevo mensaje a todos los usuarios. Sin embargo, esto requiere un servidor XMPP que aumenta la complejidad del sistema.
La mayoría de los usuarios no están al borde de la fuga en las versiones de los navegadores, por lo que tendrá que ser capaz de manejar navegadores más antiguos. La mayoría de las alternativas implican abrir una conexión de larga ejecución al servidor que responde cada vez que llegan nuevos datos.Aquí está una lista de métodos para la simulación de una conexión persistente en los navegadores antiguos:
- Adobe Flash zócalo
- ActiveX htmlfile (IE)
- Eventos enviados por el servidor (Opera)
- XHR con la codificación de varias partes
- XHR con largo de votación
Estos métodos más antiguos, y WebSockets, son apoyados por una biblioteca llamada Juggernaut.
ACTUALIZACIÓNJuggernaut has been deprecated by the maintainer, por una buena razón: los navegadores modernos soportan conexiones persistentes fuera de la caja (con la excepción de IE, por supuesto) a través de una especificación llamados eventos enviados por el servidor (SSE). La compatibilidad con versiones anteriores ahora es manejada por polyfills (What is a polyfill?) y como las notas de publicación de desaprobación, hay algunas buenas para llevar el SSE a los navegadores heredados.
¿Tiene que ser PHP? ¿Tiene que ser XMPP? – Sixty4Bit
@ Sixty4Bit, perdón por el retraso en responderle. Tiene que ser PHP, no * tiene que ser * XMPP – P3tro
¿Por qué no probar mibew? Eso está en PHP y funciona bien. – Tanmay