~/beer-and-code
~ / eventos / workshop-comunicacao-em-tempo-real-com-laravel-reverb $ _
Workshop Encerrado

Workshop: Comunicação em Tempo Real com Laravel Reverb

Workshop 100% mão-na-massa sobre comunicação em tempo real com Laravel Reverb: modelagem de banco para chat (relacionamento N-para-N via tabela pivô), canais públicos e privados, Whisper, lista de presença, notificações e broadcasting, fechando com deploy real...

Ficha do evento
formato workshop
quando 25 Set 2024
horário 19h às 22h
status encerrado

Workshop tocado por Daniel Sampaio e Lucas Souza (Virgo), da Beer and Code, com clima de aula prática do início ao fim: nada de slide, direto no código, projeto de chat já com migrations, models e front-end (Blade + AlpineJS) prontos para focar 100% no Reverb.

Destaques

  • Modelagem do banco explicada com foco em performance: tabela chats + pivô chat_user (N-para-N) em vez de duas colunas from/to, evitando queries pesadas de busca de conversa a cada mensagem.
  • Instalação via php artisan install:broadcasting, gerando .env com REVERB_APP_ID/KEY/SECRET (mesmo esquema do Pusher, já que o Reverb implementa o mesmo protocolo) e os arquivos echo.js/bootstrap.js.
  • Chat global "efêmero" implementado só com Echo.private() + whisper/listenForWhisper, sem tocar no back-end — usado para mostrar a diferença entre comunicação puramente front-end e broadcast via Laravel.
  • Lista de presença com Echo.join(), eventos .here(), .joining() e .leaving() para saber quem está conectado em tempo real (caso de uso citado: evitar sobrescrita de dados quando duas pessoas mexem no mesmo registro).
  • Chat privado 1-a-1 persistido no banco: evento NewMessage implements ShouldBroadcast, canal privado chat.{chatId} autorizado em routes/channels.php validando se o chat pertence ao usuário logado.
  • Indicador de "digitando" via whisper com debounce (setTimeout) e notificações via Notification + BroadcastMessage, com regra de front-end para não notificar quem já está na tela da conversa (usando o pacote Ziggy para rotas no JS).
  • Deploy real ao vivo: instância EC2 (t2.medium, ~US$15-16/mês), Nginx + PHP 8.3 + MySQL + NVM, com discussão sobre rodar reverb:start e workers na mesma máquina para um MVP, e caminho para separar o servidor do Reverb quando precisar escalar.

Profundidade técnica

A aula foi além do "hello world" de WebSocket: discutiu debug de conexão pelo painel de rede do navegador (frame WS), o comando reverb:start --debug para inspecionar mensagens trafegando, e a pegadinha clássica de Sail/Docker de precisar expor a porta 8080 no docker-compose.yml. Também tratou segurança de canais privados com seriedade — reforçando que ofuscar IDs (UUID/slug) não substitui regra de autorização, e que o bloqueio de acesso indevido tem que estar na channel authorization (com exemplo prático de resposta a tentativa de acesso cruzado entre usuários). Ficou como desafio em aberto detectar inatividade do usuário na lista de presença (ideia discutida: monitorar eventos de mouse/teclado com timeout).

Faça parte do Clã

Se você curte esse tipo de conteúdo direto ao ponto — código na tela, decisão de arquitetura explicada e sem enrolação — esse é exatamente o tipo de encontro que rola com frequência lá no Clã Beer and Code. Além de acesso a workshops como esse, você tem mentoria técnica direta e uma comunidade de devs Laravel/PHP trocando experiência real de mercado. Vale a pena dar uma olhada.

▪ Clã Beer and Code
Faça parte do Clã. Construa o que importa.

Engenharia de IA virou profissão, e se aprende construindo, não assistindo. O Clã Beer and Code é o ambiente onde isso acontece ao vivo, toda semana: RAG, agentes, observabilidade e LLMOps em projetos reais, ao lado de quem já está em produção. É pago, é assinatura, e é exatamente o ambiente que estes encontros dão uma amostra.

Entrar no Clã
tocando