Biblioteca WebSocket Ratchet para PHP: guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Biblioteca Ratchet para WebSocket em PHP



No desenvolvimento web moderno, a troca de dados em tempo real é cada vez mais necessária: chats, notificações, jogos online, edição colaborativa de documentos. O HTTP tradicional não é adequado para essas tarefas, pois funciona no esquema "requisição-resposta". O protocolo WebSocket vem para ajudar, estabelecendo uma conexão bidirecional permanente entre o cliente e o servidor.



Para PHP, uma das bibliotecas mais populares e maduras para trabalhar com WebSocket é o Ratchet. Ela fornece uma API conveniente para criar servidores WebSocket que podem lidar com múltiplas conexões simultâneas. Neste artigo, vamos detalhar como instalar o Ratchet, escrever um servidor e cliente simples, e também abordar cenários típicos de uso.



O que é Ratchet?



Ratchet é uma biblioteca para PHP, construída sobre o ReactPHP (um event-loop assíncrono). Ela permite criar servidores WebSocket que funcionam em tempo real, sem a necessidade de módulos adicionais (como ext-sockets ou ext-event). A biblioteca suporta o padrão RFC 6455 (WebSocket) e integra-se facilmente com qualquer aplicação PHP.



Principais recursos do Ratchet:

  • Suporte ao protocolo WebSocket (versões 13 e anteriores).
  • Possibilidade de criar controladores personalizados para processar mensagens.
  • Suporte integrado ao WAMP (WebSocket Application Messaging Protocol) para pub/sub (publicador-assinante) e RPC (chamada remota de procedimentos).
  • Fácil integração com frameworks (Laravel, Symfony) através de pacotes separados.
  • Alta performance graças à arquitetura assíncrona do ReactPHP.


Instalação do Ratchet



A instalação é feita através do Composer. Para isso, na raiz do seu projeto, execute o comando:



composer require cboden/ratchet


Após a instalação, o diretório vendor será criado no seu projeto com a biblioteca e suas dependências (incluindo o ReactPHP). Certifique-se de ter o PHP versão 7.1 ou superior instalado.



Criação de um servidor WebSocket simples



Vamos escrever um servidor simples que recebe mensagens dos clientes e as envia de volta (servidor eco). Crie o arquivo server.php:



<?phprequire __DIR__ . '/vendor/autoload.php';

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

class EchoServer implements MessageComponentInterface { public function onOpen(ConnectionInterface $conn) { echo "Nova conexão: {$conn->resourceId}"; }

public function onMessage(ConnectionInterface $from, $msg) { echo "Mensagem recebida de {$from->resourceId}: {$msg}"; // Envia a mensagem de volta para o remetente $from->send("Eco: {$msg}"); }

public function onClose(ConnectionInterface $conn) { echo "Conexão {$conn->resourceId} fechada"; }

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

// Inicia o servidor na porta 8080$server = IoServer::factory( new HttpServer( new WsServer( new EchoServer() ) ), 8080);

echo "Servidor WebSocket iniciado na porta 8080";$server->run();


Inicie o servidor com o comando php server.php. Ele ficará ouvindo conexões WebSocket na porta 8080.



Criação de um cliente (JavaScript)



Para testar, crie um arquivo HTML simples com um cliente JavaScript:



<!DOCTYPE html><html><head>    <title>Cliente WebSocket</title></head><bod                    

Recommendations