Biblioteca WebSocket Ratchet: criando tempo real em PHP

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
```html

Biblioteca WebSocket Ratchet para PHP: criando aplicações em tempo real



WebSocket é um protocolo que permite comunicação bidirecional entre cliente e servidor através de uma única conexão persistente. Diferente do HTTP tradicional, onde cada requisição abre uma nova conexão, o WebSocket permite transmitir dados em tempo real sem atrasos. Para PHP, uma das bibliotecas mais populares para trabalhar com WebSocket é o Ratchet. Esta biblioteca é construída sobre o ReactPHP e fornece uma API simples e poderosa para criar servidores WebSocket.



O que é Ratchet?



Ratchet é uma biblioteca PHP de código aberto que permite aos desenvolvedores criar aplicações em tempo real, como chats, notificações, jogos online e sistemas de monitoramento. Ela abstrai a complexidade de trabalhar com sockets e I/O assíncrono, fornecendo classes e interfaces convenientes.



Principais recursos do Ratchet:

  • Suporte a WebSocket conforme a especificação RFC 6455
  • Integração com servidores HTTP (por exemplo, via ReactPHP)
  • Possibilidade de criar manipuladores de mensagens personalizados
  • Suporte a WAMP (WebSocket Application Messaging Protocol) para Pub/Sub
  • Leveza e alta performance


Instalação do Ratchet



A instalação da biblioteca é feita através do Composer. Execute no terminal:



composer require cboden/ratchet


Após a instalação, uma pasta vendor com as dependências necessárias, incluindo o ReactPHP, será criada no seu projeto.



Criando um servidor WebSocket simples



Vamos considerar um exemplo básico: criar um servidor que aceita conexões e envia uma mensagem de boas-vindas de volta. Para isso, crie o arquivo server.php:



<?phprequire 'vendor/autoload.php';

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

class MyWebSocket 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}"; $conn->send("Bem-vindo! Seu ID: {$conn->resourceId}"); }

public function onMessage(ConnectionInterface $from, $msg) { echo "Mensagem recebida de {$from->resourceId}: {$msg}"; // Envia para todos os clientes foreach ($this->clients as $client) { if ($from !== $client) { $client->send("Mensagem de {$from->resourceId}: {$msg}"); } } }

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

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

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

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


Inicie o servidor com o comando:



php server.php


Agora o servidor está ouvindo na porta 8080. Para testar, você pode usar qualquer cliente WebSocket, como uma extensão de navegador ou um código JavaScript simples.



Parte cliente em JavaScript



Crie o arquivo HTML client.html:



<!DOCTYPE html><html><head>    <title>Cliente WebSocket</title></head><body>    <input type="text" id="message" placeholder="Dig
```                    

Recommendations