Biblioteca WebSocket Ratchet: creación en tiempo real en PHP

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biblioteca WebSocket Ratchet para PHP: creación de aplicaciones en tiempo real



WebSocket es un protocolo que proporciona comunicación bidireccional entre el cliente y el servidor a través de una única conexión persistente. A diferencia del HTTP tradicional, donde cada solicitud abre una nueva conexión, WebSocket permite transferir datos en tiempo real sin demoras. Para PHP, una de las bibliotecas más populares para trabajar con WebSocket es Ratchet. Esta biblioteca está construida sobre ReactPHP y proporciona una API simple y potente para crear servidores WebSocket.



¿Qué es Ratchet?



Ratchet es una biblioteca PHP de código abierto que permite a los desarrolladores crear aplicaciones en tiempo real, como chats, notificaciones, juegos en línea y sistemas de monitoreo. Abstrae la complejidad de trabajar con sockets y entrada/salida asíncrona, proporcionando clases e interfaces convenientes.



Características principales de Ratchet:

  • Soporte para WebSocket según la especificación RFC 6455
  • Integración con servidores HTTP (por ejemplo, a través de ReactPHP)
  • Posibilidad de crear manejadores de mensajes personalizados
  • Soporte para WAMP (WebSocket Application Messaging Protocol) para Pub/Sub
  • Ligereza y alto rendimiento


Instalación de Ratchet



La instalación de la biblioteca se realiza a través de Composer. Ejecute en la terminal:



composer require cboden/ratchet


Después de la instalación, en su proyecto aparecerá la carpeta vendor con las dependencias necesarias, incluyendo ReactPHP.



Creación de un servidor WebSocket simple



Consideremos un ejemplo básico: crearemos un servidor que acepte conexiones y envíe un mensaje de bienvenida. Para ello, cree el archivo server.php:



<?phprequire 'vendor/autoload.php';

use Ratchet\\MessageComponentInterface;use Ratchet\\ConnectionInterface;use Ratchet\\Server\\IoServer;use Ratchet\\Http\\HttpServer;use Ratchet\\WebSocket\\WsServer;

class MyWebSocket implements MessageComponentInterface { protected $clients;

public function __construct() { $this->clients = new \\SplObjectStorage; }

public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "Nueva conexión: {$conn->resourceId}"; $conn->send("¡Bienvenido! Su ID: {$conn->resourceId}"); }

public function onMessage(ConnectionInterface $from, $msg) { echo "Mensaje recibido de {$from->resourceId}: {$msg}"; // Enviar a todos los clientes foreach ($this->clients as $client) { if ($from !== $client) { $client->send("Mensaje de {$from->resourceId}: {$msg}"); } } }

public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Conexión {$conn->resourceId} cerrada"; }

public function onError(ConnectionInterface $conn, \\Exception $e) { echo "Error: {$e->getMessage()}"; $conn->close(); }}

$server = IoServer::factory( new HttpServer( new WsServer( new MyWebSocket() ) ), 8080);

echo "Servidor WebSocket iniciado en el puerto 8080...";$server->run();


Inicie el servidor con el comando:



php server.php


Ahora el servidor escucha en el puerto 8080. Para probarlo, puede usar cualquier cliente WebSocket, por ejemplo, una extensión del navegador o un código JavaScript simple.



Parte del cliente en JavaScript



Cree un archivo HTML client.html:



<!DOCTYPE html><html><head>    <title>Cliente WebSocket</title></head><body>    <input type="text" id="message" placeholder="Ing                    

Recommendations