Una biblioteca PHP para servir WebSockets de forma asincrónica. Cree su aplicación a través de interfaces simples y reutilícela sin cambiar nada de su código simplemente combinando diferentes componentes.
Actualmente nuestro objetivo es revivir Ratchet para actualizarlo con las últimas versiones y utilizarlo como punto de partida para futuras actualizaciones más importantes. Necesitamos su ayuda para lograr este objetivo; consulte el ticket n.° 1054 para conocer formas de ayudar.
Se requiere acceso Shell y se recomienda acceso root. Para evitar el bloqueo de proxy/firewall, se recomienda solicitar WebSockets en el puerto 80 o 443 (SSL), que requiere acceso raíz. Para hacer esto, junto con su pila web de sincronización, puede usar un proxy inverso o dos máquinas separadas. Puede encontrar más detalles en los documentos de configuración del servidor.
La documentación de usuario y API está disponible en el sitio web de Ratchet: http://socketo.me
Consulte https://github.com/cboden/Ratchet-examples para ver algunas demostraciones de trabajo listas para usar con Ratchet.
¿Necesitar ayuda? ¿Tiene alguna pregunta? ¿Quieres enviar comentarios? Escribe un mensaje en la lista de correo de Grupos de Google.
<?php
use Ratchet MessageComponentInterface ;
use Ratchet ConnectionInterface ;
// Make sure composer dependencies have been installed
require __DIR__ . ' /vendor/autoload.php ' ;
/ * *
* chat . php
* Send any incoming messages to all connected clients ( except sender )
* /
class MyChat implements MessageComponentInterface {
protected $ clients ;
public function __construct () {
$ this -> clients = new SplObjectStorage ;
}
public function onOpen ( ConnectionInterface $ conn ) {
$ this -> clients -> attach ( $ conn );
}
public function onMessage ( ConnectionInterface $ from , $ msg ) {
foreach ( $ this -> clients as $ client ) {
if ( $ from != $ client ) {
$ client -> send ( $ msg );
}
}
}
public function onClose ( ConnectionInterface $ conn ) {
$ this -> clients -> detach ( $ conn );
}
public function onError ( ConnectionInterface $ conn , Exception $ e ) {
$ conn -> close ();
}
}
// Run the server application through the WebSocket protocol on port 8080
$ app = new Ratchet App ( ' localhost ' , 8080 );
$ app -> route ( ' /chat ' , new MyChat , array ( ' * ' ));
$ app -> route ( ' /echo ' , new Ratchet Server EchoServer , array ( ' * ' ));
$ app -> run ();
$ php chat.php
// Then some JavaScript in the browser:
var conn = new WebSocket ( 'ws://localhost:8080/echo' ) ;
conn . onmessage = function ( e ) { console . log ( e . data ) ; } ;
conn . onopen = function ( e ) { conn . send ( 'Hello Me!' ) ; } ;