Aplicación PHP+notificaciones basadas en WebSocket sobre Socket.IO
apache node.js (3)
No hay una forma fácil de comunicarse entre nodo y apache / php. Por lo tanto, tendrá que volver a escribir toda su funcionalidad en el nodo (conectarse a bases de datos MySQL y demás) o crear una API para llamar desde Node y pasar a sockets.
Sin embargo, podría usar un plugin jquery como Jquery graceful websockets y esta clase php para obtener su propia funcionalidad de websockets con jquery y php, en lugar de usar sockets.io.
Tengo una aplicación web escrita en PHP usando laravel.
Ahora, tengo que agregar un sistema de notificación en tiempo real que envía mensajes del servidor -> cliente, y puede recuperar mensajes enviados desde el cliente -> servidor.
Como Socket.IO es compatible con versiones anteriores y se degrada graciosamente, quiero usarlo para la parte de sondeo WebSocket / AJAX.
El problema es que Socket.IO funciona de manera predeterminada con el backend Node.JS.
Tengo acceso de root al servidor, no hay problemas para ejecutar ambos (Apache y Node) en paralelo o agregar algo extra.
El problema es, ¿cómo envío un mensaje de PHP a Node + Sockets.IO?
Y luego, ¿cómo transfiero un mensaje de Sockets.IO + Node a PHP?
He dejado la partición Node + Sockets to Browser, porque es bastante sencillo.
He visto ejemplos que utilizan solicitudes Express.js + CURL y / o POST , pero ¿no hay una forma de nivel inferior de hacerlo?
Soy consciente de DNode + PHP , pero no puedo imaginar cómo ensamblar todo: Apache, PHP, Node, Socket.IO, DNode para que funcionen juntos sin problemas.
Además, he transformado en una biblioteca laravel esta implementación del servidor PHP WebSockets . El problema con esta biblioteca, sin embargo, es que utiliza WebSockets limpios para su lado del cliente. Y no pude encontrar la manera de hackearlo junto con el cliente Socket.IO .
Elephant.IO es compatible con PHP con Socket.IO así que échale un vistazo!
Este tutorial sobre el uso de PHP y Socket.IO responde a la parte principal de su pregunta.
socket.io no es tu única opción. Echa un vistazo a la guía de tecnología web en tiempo real . Por lo que parece, la mejor solución basada en PHP ahora mismo es Ratchet . Esto debe ejecutarse como un proceso separado, por lo que aún tendrá el problema de comunicación entre procesos.
El problema de comunicación de proceso cruzado común es usar colas de mensajes. El problema luego aparece cuando quieres que tu aplicación PHP que se ejecuta en Apache esté informada de los eventos de la tecnología web en tiempo real. Probablemente tengas que hacer eso a través de una llamada web, incluso si es una llamada desde el proceso de tecnología web en tiempo real al servidor apache.
Otra opción es descargar la comunicación en tiempo real a un servicio alojado como Pusher para el que trabajo.
Esta pregunta reciente también es relevante y tiene algunos enlaces útiles: ¿está disponible el soporte PHP nativo para Web Sockets?