WebSockets para PHP

Si en algo hace agua PHP es en proporcionar un canal de comunicación bidireccional entre el servidor web y el navegador del cliente. Aunque si vamos al caso, el lenguaje no fue creado con esa intención, por lo que las culpas son muy relativas, en cambio herramientas como Node.js hacen un excelente trabajo en estos menesteres.

websockets con php

Sin embargo puede ocurrir que toda nuestra aplicación este escrita en PHP, y por una cuestión practica no deseemos utilizar otra tecnología, para estos casos Ratchet es una excelente alternativa.

Ratchet es un conjunto de bibliotecas escritas en PHP para la creación de canales bidireccionales entre el cliente y el servidor utilizando websockets.

No hay que confundir websockets con soluciones similares, pero distintas al fin y al cabo, como por ejemplo comet o reverse ajax. En particular me gusta mucho la idea de utilizar websockets, son una solución mucho más limpia, y algo que se afianzará completamente con el paso del tiempo gracias a la adopción de la tecnología por la mayoría de los navegadores modernos.

Ejemplo de WebSockets con PHP

<?php
use Ratchet\Server\IoServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;

    $server = IoServer::factory(
        new WsServer(
            new Chat()
        )
      , 8000
    );

    $server->run();
?>

JavaScript:

    var conn = new WebSocket('ws://localhost:8000');
    conn.onmessage = function(e) {
        console.log(e.data);
    };

    // Later, at your leisure:
    conn.send('Hello World!');

Como se puede ver en el ejemplo crear un socket por el cual la aplicación se comunica con el servidor es muy sencillo, bastante más que las soluciones que probé que se basadas en Comet. El resto es estudiar la documentación y hacer pruebas de rendimiento.

En el sitio oficial del proyecto van a encontrar muchos más datos sobre como implementar esta fantástica biblioteca que PHP venia necesitando hace tiempo 😀

Web: Ratchet

Categorizado en: