WebSocket em PHP: criando aplicações em tempo real do zero

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

Introdução ao WebSocket em PHP: da teoria à prática



As aplicações web modernas exigem cada vez mais a transmissão instantânea de dados entre cliente e servidor. O ciclo tradicional de requisição-resposta HTTP, baseado em long polling ou requisições AJAX periódicas, já não consegue lidar com tarefas em tempo real. É aqui que o protocolo WebSocket entra em ação — uma tecnologia que permite estabelecer uma conexão bidirecional permanente entre o navegador e o servidor.



Neste artigo, vamos explorar como criar aplicações em tempo real com PHP usando WebSocket. Você aprenderá como instalar a biblioteca de servidor Ratchet, escrever um chat simples e um sistema de notificações, além de quais armadilhas esperar. O material é voltado para desenvolvedores familiarizados com os fundamentos de PHP e JavaScript.



O que é WebSocket e por que é importante para o PHP?



WebSocket é um protocolo que opera sobre TCP. Ele é iniciado como uma requisição HTTP (handshake), após a qual a conexão é "atualizada" para um canal bidirecional completo. Ao contrário do HTTP:



  • O servidor pode enviar dados ao cliente sem uma requisição prévia.
  • A conexão permanece aberta, economizando recursos em handshakes repetidos.
  • A latência de transmissão de dados é mínima — milissegundos contra segundos no long polling.


Tradicionalmente, o PHP era considerado uma linguagem inadequada para tarefas em tempo real devido ao seu modelo "uma requisição, um processo". No entanto, bibliotecas modernas como Ratchet e ReactPHP permitem executar processos PHP de longa duração que funcionam como servidores WebSocket independentes. Isso abre possibilidades para:



  • Chats online e mensageiros.
  • Sistemas de notificações (novos e-mails, pedidos, alertas).
  • Edição colaborativa de documentos.
  • Jogos e plataformas de trading.


Instalação e configuração do servidor WebSocket em PHP com Ratchet



Para trabalhar com WebSocket em PHP, usaremos a biblioteca Ratchet (baseada em ReactPHP). A instalação é feita via Composer.



Passo 1. Criar o projeto e instalar as dependências



mkdir websocket-phpcd websocket-phpcomposer require cboden/ratchet


Após a instalação, as pastas vendor conterão Ratchet e ReactPHP.



Passo 2. Criar a classe do servidor WebSocket



Crie o arquivo server.php:



<?phpuse Ratchet\\MessageComponentInterface;use Ratchet\\ConnectionInterface;

class ChatServer implements MessageComponentInterface { protected $clients;

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

public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "Nova conexão: {$conn->resourceId}"; }

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); echo "Desconexão: {$conn->resourceId}"; }

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


Passo 3. Iniciar o servidor



Adicione o código de inicialização ao server.php:



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

require __DIR__ . '/vendor/autoload.php';

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

echo "Servidor WebSocket iniciado na porta 8080";$se

Blogs

Book Recommendations