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:

  1. Implementar StatusPedidoAtualizadoEvent implements ShouldBroadcast com método broadcastOn().

Resultado Esperado

Evento configurado para transmissão em canal privado WebSocket.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_18_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_18_2_SeuNome
  2. 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:

  1. Configurar config/reverb.php e inicializar servidor WebSocket com php 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)

  1. Salve o arquivo como: Atividade_18_3_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_18_4_SeuNome
  2. 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.');