Uma biblioteca PHP para servir WebSockets de forma assíncrona. Crie seu aplicativo por meio de interfaces simples e reutilize-o sem alterar nenhum código, apenas combinando diferentes componentes.
No momento, nosso objetivo é reviver o Ratchet para atualizá-lo com as versões mais recentes e usar isso como ponto de partida para atualizações maiores que virão. Precisamos da sua ajuda para atingir esse objetivo. Consulte o ticket nº 1054 para saber como ajudar.
O acesso ao shell é necessário e o acesso root é recomendado. Para evitar o bloqueio de proxy/firewall é recomendado que os WebSockets sejam solicitados na porta 80 ou 443 (SSL), que requer acesso root. Para fazer isso, junto com sua pilha da web de sincronização, você pode usar um proxy reverso ou duas máquinas separadas. Você pode encontrar mais detalhes nos documentos de configuração do servidor.
A documentação do usuário e da API está disponível no site da Ratchet: http://socketo.me
Consulte https://github.com/cboden/Ratchet-examples para algumas demonstrações de trabalho prontas para uso usando Ratchet.
Precisar de ajuda? Tem alguma pergunta? Quer fornecer feedback? Escreva uma mensagem na lista de discussão dos Grupos do 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!' ) ; } ;