es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualizaciones en tiempo real de WebSocket de PHP en múltiples dispositivos.

Estoy intentando implementar un sistema de actualización de cliente pub/sub auto-alojado (docker) muy simple para mi aplicación PHP, usando websockets o SSE.

Me gustaría que una acción específica de JavaScript en mi sitio web desencadene una actualización del lado del servidor de PHP (a través de Ajax), lo que debería llevar a una actualización en todos los dispositivos suscritos para el canal / tema en particular. Los dispositivos suscritos deberían usar JavaScript para escuchar un canal cada uno.

¿Conoce alguna biblioteca de PHP simple para WS que sea capaz de eso? ¿Se puede activar SSE de esa manera y también utilizar canales? ¿Qué hay del socket de PHP incorporado? Idealmente, me gustaría adherirme a la solución de PHP para no tratar con traducciones e interfaces de REST intermedias.

Después de investigar esto durante días y pasar por soluciones como RabbitMQ, Redis, Kafka, RatchetPHP, ZeroMQ, socket.io, RPC, SSE, etc., estoy completamente perdido. Necesito orientación sobre qué camino tomar.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en PHP en websocket, zmq, rpc y ratchet, recomendaría que utilices RatchetPHP, que proporciona un servidor y biblioteca de cliente WebSocket que incluye soporte para la transmisión de mensajes a clientes suscritos. También tiene una función de PubSub incorporada que te permite gestionar canales/temas a los que los clientes pueden suscribirse.

    Para implementar tu sistema de actualización de clientes PubSub autohospedado (docker), puedes utilizar Ratchet para crear un servidor WebSocket que escuche nuevas conexiones y maneje mensajes entrantes de los clientes. Cuando un cliente active la actualización del lado del servidor PHP a través de AJAX, tu código del servidor puede entonces enviar actualizaciones a todos los clientes suscritos en el canal/tema específico utilizando la función PubSub de Ratchet. Los clientes pueden escuchar el canal/tema utilizando JavaScript y la biblioteca de clientes WebSocket de Ratchet.

    Alternativamente, puedes utilizar la función de socket PHP integrada para crear un servidor WebSocket, pero este enfoque requeriría un manejo más manual de las conexiones de WebSocket y la codificación/descodificación de mensajes. También puede ser menos eficiente y menos flexible que el uso de una biblioteca especializada como Ratchet.

    SSE también se puede utilizar para implementar un sistema PubSub similar, pero está limitado en términos de notificaciones push en tiempo real y puede requerir más código del lado del cliente para manejar las reconexiones y reanudaciones.

    En resumen, RatchetPHP es una opción simple y poderosa para implementar un sistema de actualización de clientes PubSub autohospedado (docker) utilizando WebSockets en PHP. Proporciona todas las funciones necesarias para gestionar canales/temas, transmitir mensajes a clientes suscritos y manejar las conexiones de WebSocket de manera eficiente.

Comments are closed.