Laravel Broadcasting

Laravel
Tempo de leitura: 4 minutos

Laravel Broadcasting: O Laravel, um dos frameworks PHP mais populares, oferece uma poderosa ferramenta para construir aplicações web em tempo real: o Laravel Broadcasting. Com ele, você pode enviar eventos do seu servidor para clientes conectados, criando experiências mais dinâmicas e interativas. Imagine um chat em tempo real, notificações instantâneas ou atualizações de dashboards – todas essas funcionalidades podem ser implementadas de forma eficiente com o Laravel Broadcasting.

Neste artigo, vamos explorar em detalhes o que é o Laravel Broadcasting, como ele funciona e como você pode utilizá-lo em seus projetos. Veremos exemplos práticos e dicas para otimizar suas aplicações em tempo real.

O que é Laravel Broadcasting?

Em poucas palavras, o Laravel Broadcasting é um sistema que permite que você envie eventos do seu servidor Laravel para seus clientes, geralmente através de WebSockets. Esses eventos podem ser qualquer tipo de informação que você queira compartilhar com o cliente, como novas mensagens em um chat, atualizações de dados em tempo real ou notificações personalizadas.

Por que usar Laravel Broadcasting?

  • Experiência do usuário aprimorada: Crie aplicações mais responsivas e interativas, com atualizações em tempo real.
  • Facilidade de uso: O Laravel Broadcasting integra-se perfeitamente com o framework, tornando a configuração e utilização simples.
  • Diversidade de drivers: Suporte a diversos servidores de broadcasting, como Pusher, Redis e outros.
  • Escalabilidade: Pode lidar com um grande número de conexões simultâneas.

Como funciona o Laravel Broadcasting?

O processo de broadcasting no Laravel envolve os seguintes passos:

  1. Disparo de um evento: Em seu código Laravel, você dispara um evento quando algo relevante acontece, como a criação de um novo comentário em um post.
  2. Broadcasting do evento: O Laravel Broadcasting intercepta esse evento e o envia para um driver de broadcasting, como Pusher, Redis ou outros.
  3. Assinatura de canais: No seu cliente JavaScript, você utiliza uma biblioteca como Laravel Echo para se conectar a um canal específico no driver de broadcasting.
  4. Recebimento do evento: Quando um evento é transmitido para o canal, todos os clientes conectados a esse canal recebem a mensagem e podem executar ações em resposta.

Configurando o Broadcasting com Pusher Laravel

Para começar a utilizar o recurso de broadcast no Laravel, você precisa configurar um driver. O Pusher é um dos drivers mais populares e fácil de configurar. Para configurá-lo, adicione as seguintes informações ao seu arquivo .env:

PUSHER_APP_ID=your_app_id
PUSHER_APP_KEY=your_app_key
PUSHER_APP_SECRET=your_app_secret
PUSHER_APP_CLUSTER=your_app_cluster

Em seguida, registre o driver Pusher no arquivo config/broadcasting.php:

'default' => env('BROADCAST_DRIVER', 'log'),

'connections' => [
    'pusher' => [
        'app_id' => env('PUSHER_APP_ID'),
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'host' => env('PUSHER_HOST'),
        'port' => env('PUSHER_PORT', null),
        'scheme' => env('PUSHER_SCHEME', 'https'),
    ],
],

Criando um Evento

Para criar um evento, utilize o comando Artisan:

Bash

php artisan make:event NewComment

Em seguida, defina o método broadcastWith para indicar quais dados devem ser transmitidos:

PHP

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;   

class NewComment implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $comment;

    public function __construct($comment)   
    {
        $this->comment = $comment;
    }

    public function broadcastOn()
    {
        return    new PresenceChannel('comments.' . $this->comment->post_id);
    }

    public function broadcastWith()
    {
        return ['comment' => $this->comment];
    }
}

Disparando um Evento

Para disparar um evento, utilize o método broadcast do facade Event lá no seu Controller:

PHP

event(new NewComment($comment));

Escolhendo o Canal Correto

O canal é como uma sala de bate-papo onde os clientes se inscrevem para receber eventos. O Laravel oferece diferentes tipos de canais:

  • PrivateChannel: O evento é transmitido apenas para um usuário específico.
  • PresenceChannel: Permite verificar quais usuários estão presentes em um canal.
  • Channel: Transmite o evento para todos os usuários inscritos em um canal.

Ouvindo Eventos no Cliente

Para ouvir eventos no cliente, você pode utilizar uma biblioteca como Laravel Echo. Primeiro, instale o Laravel Echo:

Bash

npm install --save laravel-echo

Em seguida, crie um arquivo JavaScript e configure o Echo:

JavaScript

import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,   
    forceTLS: true   
});

window.Echo.channel('comments.1')
    .listen('NewComment', (e) => {
        console.log(e.comment.body);
    });

Conclusão

Laravel Broadcasting: É uma ferramenta poderosa para construir aplicações web em tempo real. Com ele, você pode criar experiências mais ricas e dinâmicas para seus usuários. Ao entender os conceitos básicos e a configuração, você estará pronto para implementar funcionalidades em tempo real em suas aplicações Laravel.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi