Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Broadcast Notifications in Laravel

Introduction

In modern web applications, notifications play a vital role in keeping users informed about various events. Laravel provides a robust notification system that allows developers to send notifications via different channels such as database, mail, SMS, and broadcasting. This tutorial focuses on broadcasting notifications using Laravel's built-in capabilities.

Prerequisites

Before we start broadcasting notifications, ensure you have the following:

  • Laravel installed (at least version 5.3).
  • A basic understanding of Laravel and its notification system.
  • Laravel Echo and a broadcasting service (e.g., Pusher, Redis) set up in your application.

Setting Up Broadcasting

To broadcast notifications, you need to configure your broadcasting settings. Open the config/broadcasting.php file and set up your desired driver. For instance, if you are using Pusher, you would add your credentials like so:

                'pusher' => [
                    'driver' => 'pusher',
                    'key' => env('PUSHER_APP_KEY'),
                    'secret' => env('PUSHER_APP_SECRET'),
                    'app_id' => env('PUSHER_APP_ID'),
                    'options' => [
                        'cluster' => 'mt1',
                        'useTLS' => true,
                    ],
                ],
                

Creating a Notification

Use the Artisan command to create a new notification:

php artisan make:notification BroadcastNotification

This command will create a new notification class in the app/Notifications directory. Open the newly created class and implement the toBroadcast method to define how the notification should be broadcasted.

                use Illuminate\Notifications\Notification;
                use Illuminate\Broadcasting\Channel;
                use Illuminate\Broadcasting\PrivateChannel;
                use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

                class BroadcastNotification extends Notification implements ShouldBroadcast
                {
                    public function __construct($message)
                    {
                        $this->message = $message;
                    }

                    public function toBroadcast($notifiable)
                    {
                        return new BroadcastMessage([
                            'message' => $this->message,
                        ]);
                    }

                    public function broadcastOn()
                    {
                        return new Channel('notifications');
                    }
                }
                

Sending the Notification

Now that we have our notification class set up, we can send a notification to a user. You can do this in a controller or any other part of your application:

                use App\Models\User;
                use App\Notifications\BroadcastNotification;

                $user = User::find(1);
                $user->notify(new BroadcastNotification('This is a broadcast notification!'));
                

Listening for Broadcast Notifications

To listen for broadcast notifications on the client side, you can use Laravel Echo. First, ensure you have installed Laravel Echo and the necessary dependencies:

npm install --save laravel-echo pusher-js

Next, set up Laravel Echo in your JavaScript file:

                import Echo from 'laravel-echo';
                window.Pusher = require('pusher-js');

                window.Echo = new Echo({
                    broadcaster: 'pusher',
                    key: 'your-pusher-key',
                    cluster: 'your-cluster',
                    forceTLS: true
                });

                window.Echo.channel('notifications')
                    .listen('BroadcastNotification', (e) => {
                        console.log(e.message);
                    });
                

Conclusion

In this tutorial, we have covered the basics of broadcasting notifications in Laravel. We configured the broadcasting service, created a notification, sent it, and set up a listener on the client side. With these steps, you can enhance your application with real-time notifications that keep your users engaged and informed.