🧩 Exercícios: Comunicação Realtime com Laravel Reverb
Spec Backend Com Php E Laravel • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 18.1 — Evento Transmitível com ShouldBroadcast
Contexto: Evento Transmitível com ShouldBroadcast no contexto de Comunicação Realtime com Laravel Reverb.
Requisitos de Execução:
- Implementar
StatusPedidoAtualizadoEvent implements ShouldBroadcastcom métodobroadcastOn().
Resultado Esperado
Evento configurado para transmissão em canal privado WebSocket.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_1_SeuNome - Envie na tarefa:
Atividade Cap 18 - Comunicação Realtime com Laravel Reverb
🔑 Gabarito de Código & Solução Comentada
<?php
// app/Events/StatusPedidoAtualizadoEvent.php
namespace App\Events;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Queue\SerializesModels;
use App\Models\Pedido;
class StatusPedidoAtualizadoEvent implements ShouldBroadcast
{
use SerializesModels;
public function __construct(public Pedido $pedido) {}
public function broadcastOn(): array
{
return [new PrivateChannel('pedidos.' . $this->pedido->user_id)];
}
}
🔍 Nível 2: Prática
Problema 18.2 — Autorização de Canais Privados em routes/channels.php
Contexto: Autorização de Canais Privados em routes/channels.php no contexto de Comunicação Realtime com Laravel Reverb.
Requisitos de Execução:
- Autorizar canal
pedidos.{userId}conferindo se$user->id === (int) $userId.
Resultado Esperado
Canal privado protegido por autorização de usuário.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_2_SeuNome - Envie na tarefa:
Atividade Cap 18 - Comunicação Realtime com Laravel Reverb
🔑 Gabarito de Código & Solução Comentada
<?php
// routes/channels.php
use Illuminate\Support\Facades\Broadcast;
Broadcast::channel('pedidos.{userId}', function ($user, $userId) {
return (int) $user->id === (int) $userId;
});
⚡ Nível 3: Integração
Problema 18.3 — Configuração do Servidor Laravel Reverb
Contexto: Configuração do Servidor Laravel Reverb no contexto de Comunicação Realtime com Laravel Reverb.
Requisitos de Execução:
- Configurar
config/reverb.phpe inicializar servidor WebSocket comphp artisan reverb:start.
Resultado Esperado
Servidor Reverb WebSocket em execução com suporte a milhares de conexões simultâneas.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_3_SeuNome - Envie na tarefa:
Atividade Cap 18 - Comunicação Realtime com Laravel Reverb
🔑 Gabarito de Código & Solução Comentada
// config/reverb.php
return [
'servers' => [
'reverb' => [
'host' => env('REVERB_SERVER_HOST', '0.0.0.0'),
'port' => env('REVERB_SERVER_PORT', 8080),
],
],
];
🏆 Nível 4: Desafio Corporativo
Problema 18.4 — Broadcasting de Presença (Presence Channels)
Contexto: Broadcasting de Presença (Presence Channels) no contexto de Comunicação Realtime com Laravel Reverb.
Requisitos de Execução:
- Criar canal de presença
sala.{id}retornando informações dos usuários online em tempo real.
Resultado Esperado
Canal de presença exibindo lista dinâmica de participantes conectados.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_4_SeuNome - Envie na tarefa:
Atividade Cap 18 - Comunicação Realtime com Laravel Reverb
🔑 Gabarito de Código & Solução Comentada
<?php
// routes/channels.php (Presence)
Broadcast::channel('chat.{salaId}', function ($user, $salaId) {
return ['id' => $user->id, 'name' => $user->name];
});
$executado = true;
\Log::info('Operação corporativa executada com sucesso.');