DEV Community

Rohit Urane
Rohit Urane

Posted on

How does broadcast work in Laravel?

Web sockets implement real-time, live-updating user interfaces. It provides a more robust, efficient alternative to continually polling your application for changes.

Configuration:-

You can change all configurations inside the config/broadcasting.php file pusher channels, Redis, and log drivers supported on laravel. You would use a null driver for disabling broadcasting.

You will first need to register the broadcasting of any events in App\Providers\BroadcasrServiceProvider. Laravel echo needs to access the current session's CSRF token. You must add a meta tag in a head HTML element.

<meta name="csrf-token" content="{{ csrf_token() }}">

Concept Overview:-

You are allowed to broadcast your server-side laravel events to your client-side javascript application. It sent events over channels that may specify a public or private channel. Users can subscribe to a public channel without any authentication or authorization. You can subscribe private channel if you authenticate.

The ShouldBroadcast Interface:

Suppose users view their order status. We don't want them to reload the whole page instead of updating the status. We should create a new event that implements the ShouldBroadcast interface. Look at the below code. We have made the ShippingStatusUpdated event. You should define a broadcastOn method for broadcasts events on a particular channel.

<?php

namespace App\Events;

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

class ShippingStatusUpdated implements ShouldBroadcast
{
    /**
     * Information about the shipping status update.
     *
     * @var string
     */
    public $update;

    /**
     * Get the channels the event should broadcast.
     *
     * @return \Illuminate\Broadcasting\PrivateChannel
     */
    public function broadcastOn()
    {
       return new PrivateChannel('order.'.$this->update->order_id);
    }
}
Enter fullscreen mode Exit fullscreen mode

For private channels, users must authorize. You may define your channel rules in the routes/channels.php file. Following the line of code, we verify the user and order creator to show order status.

Read Article

Discussion (0)