He intentado leer algunos artículos, pero aún no tengo muy claros los conceptos.
Alguien podría explicarme en qué consisten estas tecnologías:
Una cosa con la que me he encontrado siempre es que el servidor mantiene una conexión abierta y envía datos al cliente. ¿Cómo se mantiene abierta la conexión y cómo obtiene el cliente los datos enviados? (¿Cómo utiliza el cliente los datos? Tal vez algún código podría ayudar).
Ahora, ¿cuál de ellos debería usar para una aplicación en tiempo real? He oído hablar mucho de websockets (con socket.io [una librería de node.js]) pero ¿por qué no PHP?
*En los ejemplos siguientes, el cliente es el navegador y el servidor es el servidor web que aloja el sitio web.
Antes de que puedas entender estas tecnologías, tienes que entender primero el tráfico web HTTP clásico.
HTTP]1
Ajax Polling]2
Ajax Long-Polling]3
Comet es una colección de técnicas anteriores a HTML5 que utilizan streaming y long-polling para conseguir aplicaciones en tiempo real. Más información en wikipedia o este artículo.
Ahora, cual de ellas debo usar para una aplicación en tiempo real (que necesito código). He estado escuchando mucho sobre websockets (con socket.io [a biblioteca de node.js]) pero ¿por qué no PHP?
Puedes usar PHP con WebSockets, echa un vistazo a Ratchet.
Tieme se esforzó mucho en su excelente respuesta, pero creo que el núcleo de la pregunta de la OP es cómo se relacionan estas tecnologías con PHP más que cómo funciona cada tecnología.
PHP es el lenguaje más usado en el desarrollo web, además de los obvios html, css y javascript del lado del cliente. Sin embargo PHP tiene 2 grandes problemas cuando se trata de aplicaciones en tiempo real:
Note que PHP tiene extensiones para proporcionar bucles de eventos (como libevent) e hilos (como pthreads) en el espacio de usuario de PHP, pero muy, muy, pocas de las aplicaciones los usan.
PHP 7 será un gran paso para arreglar estos problemas también, y parece muy prometedor como plataforma para aplicaciones en tiempo real.
He intentado tomar nota de ellos y he recopilado y escrito ejemplos desde una perspectiva java.
HTTP para desarrolladores Java
Eventos enviados por el servidor
Lo pongo aquí para cualquier desarrollador java que esté indagando en el mismo tema.