WebSockets em PHP: crie aplicações em tempo real sem complicação

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

WebSockets em PHP: crie aplicações em tempo real sem complicação

\n\n

Você já se perguntou por que em aplicações web modernas as notificações chegam instantaneamente e os chats funcionam sem precisar ficar apertando F5? O segredo está nos WebSockets. E sim, o PHP também sabe trabalhar em tempo real. Neste artigo, vamos entender como integrar PHP com WebSockets, criar um chat ao vivo e notificações, e o melhor: tudo isso sem dor de cabeça e sem bibliotecas desnecessárias.

\n\n

Se você está acostumado a ver o PHP como "requisição-resposta", prepare-se para se surpreender. Com WebSockets em PHP, é possível criar aplicações completas em tempo real: desde um chat simples até um jogo multiplayer. E tudo isso na sua linguagem favorita.

\n\n

O que são WebSockets e por que usá-los no PHP?

\n\n

WebSocket é um protocolo de comunicação bidirecional entre cliente e servidor. Diferente do HTTP tradicional, onde o cliente fica perguntando "tem novidade?" a todo momento, o WebSocket mantém a conexão aberta. O servidor envia dados para o cliente assim que eles surgem.

\n\n

Para o PHP, isso é um verdadeiro avanço. Antes, o tempo real era coisa do Node.js ou do Python com asyncio. Mas hoje, aplicações em tempo real com PHP são uma realidade. Graças a bibliotecas como Ratchet e Swoole, o PHP pode funcionar como um processo de longa duração, lidando com milhares de conexões simultâneas.

\n\n

Onde isso é útil?

\n
    \n
  • Chats e mensageiros;
  • \n
  • Sistemas de notificações (novos pedidos, mensagens);
  • \n
  • Edição colaborativa de documentos;
  • \n
  • Jogos online e quizzes;
  • \n
  • Monitoramento e dashboards em tempo real.
  • \n
\n\n

Preparação: o que você precisa para começar

\n\n

Para trabalhar com um servidor WebSocket em PHP, você vai precisar de:

\n
    \n
  • PHP 7.4 ou superior (de preferência 8.x);
  • \n
  • Composer — gerenciador de pacotes;
  • \n
  • Biblioteca Ratchet (ou Swoole para produção);
  • \n
  • Conhecimento básico de POO e uso do terminal.
  • \n
\n\n

Instale o Ratchet via Composer:

\n
composer require cboden/ratchet
\n\n

Após a instalação, você terá a pasta vendor e o arquivo composer.json. Tudo pronto para criar sua primeira aplicação em tempo real com PHP.

\n\n

Criando um servidor WebSocket simples em PHP

\n\n

Crie o arquivo server.php. Este será o nosso servidor WebSocket PHP, que aceita conexões e distribui mensagens para todos os clientes conectados.

\n\n
<?php\nuse Ratchet\\Server\\IoServer;\nuse Ratchet\\Http\\HttpServer;\nuse Ratchet\\WebSocket\\WsServer;\nuse Ratchet\\MessageComponentInterface;\nuse Ratchet\\ConnectionInterface;\n\nrequire __DIR__ . '/vendor/autoload.php';\n\nclass Chat implements MessageComponentInterface {\n    protected $clients;\n\n    public function __construct() {\n        $this->clients = new \\SplObjectStorage;\n        echo "Servidor iniciado!\\n";\n    }\n\n    public function onOpen(ConnectionInterface $conn) {\n        $this->clients->attach($conn);\n        echo "Nova conexão: {$conn->resourceId}\\n";\n    }\n\n    public function onMessage(ConnectionInterface $from, $msg) {\n        foreach ($this->clients as $client) {\n            if ($from !== $client) {\n                $client->send($msg);\n            }\n        }\n        echo "Mensagem de {$from->resourceId}: $msg\\n";\n    }\n\n    public function onClose(ConnectionInterface $conn) {\n        $this->clients->detach($conn);\n        echo "Conexão encerrada: {$conn->resourceId}\\n";\n    }\n\n    public function onError(ConnectionInterface $conn, \\Exception $e) {\n        echo "Erro: {$e->getMessage()}\\n";\n        $conn->close();\n    }\n}\n\n$server = IoServer::factory(\n    new HttpServer(\n        new WsServer(\n            new Chat()\n        )\n    ),\n    8080\n);\n\n$server->run();
\n\n

Inicie o servidor pelo terminal:

\n
php server.php
\n\n

Pronto! O servidor está ouvindo na porta 8080 e pronto para aceitar conexões WebSocket. Agora

Blogs

Book Recommendations