BTS SIO2D
  • Accueil
  • Connexion
14 janvier 2025 par Nathan Guche

Créer un système de notifications en temps réel avec Laravel et Pusher/Reverb

Créer un système de notifications en temps réel avec Laravel et Pusher/Reverb
14 janvier 2025 par Nathan Guche

Table des matières

Toggle
  • 📢 Système de notifications en temps réel avec Laravel et Pusher/Reverb
      • Pourquoi utiliser Pusher ou Laravel Reverb ?
    • 1️⃣ Installer Laravel et configurer Broadcasting
      • Installer Laravel Broadcasting
    • 2️⃣ Configurer Pusher ou Laravel Reverb
      • Avec Pusher
      • Avec Laravel Reverb (Laravel 11)
    • 3️⃣ Créer un événement de notification avec Laravel Events
    • 4️⃣ Diffuser un événement depuis le backend
    • 5️⃣ Côté Frontend : Écouter les notifications avec Pusher ou Reverb
    • 6️⃣ Tester les notifications en temps réel
    • 7️⃣ Améliorations possibles
    • 🔮 Conclusion : Laravel + Pusher/Reverb = 🔥

📢 Système de notifications en temps réel avec Laravel et Pusher/Reverb

Pourquoi utiliser Pusher ou Laravel Reverb ?

Dans une application moderne, les notifications en temps réel sont essentielles pour améliorer l’expérience utilisateur (chat, alertes, mises à jour instantanées…). Laravel propose Broadcasting, qui fonctionne avec Pusher ou Laravel Reverb (nouveau serveur WebSocket de Laravel 11).

Dans ce guide, nous allons voir comment :
✅ Configurer Laravel Broadcasting
✅ Utiliser Pusher ou Reverb pour diffuser des événements en temps réel
✅ Afficher des notifications instantanées dans une application Laravel


1️⃣ Installer Laravel et configurer Broadcasting

Si ce n’est pas déjà fait, installe Laravel :

bashCopierModifiercomposer create-project laravel/laravel realtime-notifications

Installer Laravel Broadcasting

Laravel est déjà livré avec un support pour le broadcasting, mais il faut activer la bonne configuration.

Dans .env, change BROADCAST_DRIVER :

envCopierModifierBROADCAST_DRIVER=pusher

Installe le package Pusher :

bashCopierModifiercomposer require pusher/pusher-php-server

Ou, si tu utilises Laravel 11 et Reverb (alternative gratuite à Pusher) :

envCopierModifierBROADCAST_DRIVER=reverb

✅ Le broadcasting est prêt !


2️⃣ Configurer Pusher ou Laravel Reverb

Avec Pusher

1️⃣ Crée un compte sur Pusher
2️⃣ Ajoute tes clés dans .env :

envCopierModifierPUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_APP_CLUSTER=mt1

3️⃣ Ajoute la configuration dans config/broadcasting.php :

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

Avec Laravel Reverb (Laravel 11)

Aucune configuration externe n’est nécessaire. Il suffit d’utiliser le driver reverb.

Démarrer le serveur Reverb :

bashCopierModifierphp artisan reverb:start

✅ Ton application est maintenant connectée à WebSocket !


3️⃣ Créer un événement de notification avec Laravel Events

Laravel utilise les événements pour diffuser des notifications.

📌 Générer un événement :

bashCopierModifierphp artisan make:event NewNotification

📌 Modifie app/Events/NewNotification.php :

phpCopierModifieruse Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

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

    public $message;

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

    public function broadcastOn()
    {
        return ['notifications']; // Nom du canal
    }

    public function broadcastAs()
    {
        return 'new-notification'; // Nom de l'événement
    }
}

✅ Cet événement enverra des notifications sur le canal notifications.


4️⃣ Diffuser un événement depuis le backend

Maintenant, faisons un contrôleur pour envoyer des notifications.

📌 Créer un contrôleur :

bashCopierModifierphp artisan make:controller NotificationController

📌 Ajoute ceci dans app/Http/Controllers/NotificationController.php :

phpCopierModifieruse App\Events\NewNotification;
use Illuminate\Http\Request;

class NotificationController extends Controller
{
    public function sendNotification(Request $request)
    {
        broadcast(new NewNotification($request->message))->toOthers();

        return response()->json(['message' => 'Notification envoyée !']);
    }
}

✅ Cette méthode diffusera une notification en temps réel !


5️⃣ Côté Frontend : Écouter les notifications avec Pusher ou Reverb

📌 Installe Echo et Pusher :

bashCopierModifiernpm install --save laravel-echo pusher-js

📌 Configure resources/js/bootstrap.js :

jsCopierModifierimport Echo from "laravel-echo";
import Pusher from "pusher-js";

window.Pusher = Pusher;

window.Echo = new Echo({
    broadcaster: "pusher",
    key: import.meta.env.VITE_PUSHER_APP_KEY,
    cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER,
    forceTLS: true
});

📌 Ou pour Laravel Reverb (Laravel 11) :

jsCopierModifierimport Echo from "laravel-echo";

window.Echo = new Echo({
    broadcaster: "reverb",
});

📌 Ajoute du JavaScript pour écouter les notifications (exemple avec Vue ou plain JS) :

jsCopierModifierwindow.Echo.channel("notifications")
    .listen(".new-notification", (event) => {
        alert("Nouvelle notification : " + event.message);
    });

✅ Les notifications s’affichent immédiatement ! 🚀


6️⃣ Tester les notifications en temps réel

1️⃣ Lance Laravel :

bashCopierModifierphp artisan serve

2️⃣ Démarre le serveur WebSocket (si tu utilises Reverb) :

bashCopierModifierphp artisan reverb:start

3️⃣ Envoie une requête pour tester la notification :

bashCopierModifiercurl -X POST -d "message=Hello World" http://127.0.0.1:8000/send-notification

✅ Tu verras immédiatement l’alerte sur ton frontend ! 🎉


7️⃣ Améliorations possibles

🔹 Stocker les notifications en base de données avec notifications de Laravel
🔹 Créer un panneau d’administration pour gérer les notifications
🔹 Utiliser Livewire ou Inertia.js pour une intégration plus fluide
🔹 Afficher les notifications avec des toasts Bootstrap ou Vue.js


🔮 Conclusion : Laravel + Pusher/Reverb = 🔥

En suivant ce guide, tu as appris à :
✅ Configurer Laravel pour le broadcasting
✅ Diffuser des événements avec Pusher ou Reverb
✅ Écouter et afficher des notifications en temps réel

Article précédentL'IA ne remplacera jamais la "touche humaine" dans le développement de jeux vidéo, selon le patron de PlayStation, Hermen HulstArticle suivant Micro Frontend avec Angular

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

About The Blog

Nulla laoreet vestibulum turpis non finibus. Proin interdum a tortor sit amet mollis. Maecenas sollicitudin accumsan enim, ut aliquet risus.

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025

Catégories

  • Article Angular Killian
  • Article Clément
  • Article Unreal Engine Hugo
  • Cybersécurité
  • IA
  • Non classé
  • Projet Flutter KHM
  • Projet Hugo
  • Stage Clément
  • Stage Hugo
  • Stage Killian P
  • TP Clément

Méta

  • Inscription
  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR

Étiquettes

Article Développer son projet professionnel Flutter Gérer son identité professionnelle Java Stage Symfony TP

Why Lander

Lander is a design prepared
especially for the free version
of Rife WordPress Theme.

You can use this for free.
Make your website today.
Get Started Now!

Contact

734 Blackwell Street
Anchorage, Alaska
info@domain.com
+33 (0) 101 0000
+33 (0) 102 0000
Mon. - Fri. 8AM - 6PM

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025
Rife Wordpress Theme. Proudly Built By Apollo13