He intentado leer algunos artículos, pero todavía no tengo muy claros los conceptos.
¿A alguien le gustaría intentar explicarme cuáles son estas tecnologías:
- Sondeo largo
- Eventos enviados por el servidor
- Websockets
- Cometa
Una de las cosas que encontré cada vez fue 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 debo usar para una aplicación en tiempo real? He estado escuchando mucho sobre websockets (con socket.io [una biblioteca de node.js]) pero ¿por qué no PHP?
php
websocket
comet
long-polling
server-sent-events
usuario1437328
fuente
fuente
Respuestas:
En los ejemplos a continuación, el cliente es el navegador y el servidor es el servidor web que aloja el sitio web.
Antes de que pueda comprender estas tecnologías, primero debe comprender el tráfico web HTTP clásico .
HTTP regular:
Encuesta Ajax:
Ajax Long-Polling:
Eventos enviados por el servidor HTML5 (SSE) / EventSource:
El servidor envía un evento al cliente cuando hay nueva información disponible.
HTML5 Websockets:
El servidor y el cliente ahora pueden enviarse mensajes cuando haya nuevos datos disponibles (en ambos lados).
Cometa:
Comet es una colección de técnicas anteriores a HTML5 que utilizan la transmisión y el sondeo largo para lograr aplicaciones en tiempo real. Lea más en wikipedia o este artículo.
Puede usar PHP con WebSockets, consulte Ratchet .
fuente
Tieme puso mucho esfuerzo en su excelente respuesta, pero creo que el núcleo de la pregunta de los OP es cómo se relacionan estas tecnologías con PHP en lugar de cómo funciona cada tecnología.
PHP es el lenguaje más utilizado en el desarrollo web además del obvio cliente html, css y javascript. Sin embargo, PHP tiene 2 problemas principales cuando se trata de aplicaciones en tiempo real:
1) PHP comenzó como un CGI muy básico. PHP ha progresado mucho desde su etapa inicial, pero sucedió en pequeños pasos. PHP ya tenía muchos millones de usuarios cuando se convirtió en la biblioteca C flexible e incrustada que es hoy, la mayoría de los cuales dependían de su modelo de ejecución anterior, por lo que aún no ha hecho un intento sólido de escapar de la modelo cgi internamente. Incluso la interfaz de línea de comandos invoca la biblioteca PHP (libphp5.so en linux, php5ts.dll en windows, etc.) como si todavía fuera un cgi que procesa una solicitud GET / POST. Todavía ejecuta código como si solo tuviera que construir una "página" y luego finalizar su ciclo de vida. Como resultado, tiene muy poco soporte para la programación basada en múltiples hilos o eventos (dentro del espacio de usuario de PHP), por lo que actualmente no es práctico para aplicaciones de múltiples usuarios en tiempo real.
Tenga en cuenta que PHP tiene extensiones para proporcionar bucles de eventos (como libevent) y subprocesos (como pthreads) en el espacio de usuario de PHP, pero muy, muy pocas aplicaciones las usan.
2) PHP todavía tiene problemas importantes con la recolección de basura. Aunque estos problemas han estado mejorando constantemente (probablemente es el mejor paso para finalizar el ciclo de vida como se describe anteriormente), incluso los mejores intentos de crear aplicaciones PHP de larga ejecución requieren reiniciarse de forma regular. Esto también lo hace poco práctico para aplicaciones en tiempo real.
PHP 7 también será un gran paso para solucionar estos problemas, y parece muy prometedor como plataforma para aplicaciones en tiempo real.
fuente
He intentado tomar nota de esto y he recopilado y escrito ejemplos desde una perspectiva de Java .
HTTP para desarrolladores de Java
Ajax inverso: estilo antiguo
Manejo asíncrono en el lado del servidor
Reverse Ajax - Nuevo estilo
Eventos enviados por el servidor
Poniéndolo aquí para cualquier desarrollador de Java que esté investigando el mismo tema.
fuente
Puede usar Node.JS fácilmente en su aplicación web solo para la comunicación en tiempo real. Node.JS es realmente poderoso cuando se trata de WebSockets. Por lo tanto, "Notificaciones PHP a través de Node.js" sería un gran concepto.
Vea este ejemplo: Creación de una aplicación de chat en tiempo real con PHP y Node.js
fuente