Laravel Résumé
Models Migration Relation
Introduction Installation Projet:Structure Strucutre,model,migration Migration,Models,Relation Artisan CLI
Les Relations
BelongsTo HasOne HasMany BelongsToMany HasManyThrough
Exemples des Relations
Relations:oneToMany,ManyToMany... Relations:Exemples
Exercices
Exercice 1 Exercice 2
Controllers Views Routes
Routes,Controller,Model,view
Les Routes
Définir:Routes Routes avec Paramètres Routes nommées Groupes de routes
Les Controllers
Les Controllers Les Contrôleurs de Ressources
Les Vues
Vues et Blade Templates Blade Layouts et Sections Sous-vues Composants et Slots Contrôles de flux
MVC :CRUD
CRUD: Produit CRUD: Etudiant CRUD: Car CRUD,Recherche: Book
Validation
Exemple :Projets
ORM:Eloquent
Exemple :Transport
Api:Laravel +React
Middleware

Seeders & Factories
Exemples :EFM

Authenfication
Queue,job,task
TP:Schools Management
Authenfication:React
Layouts
Exercices





Table des matières

  1. Introduction
  2. Présentation du concept de Broadcasting
  3. Installation côté client
  4. Installation côté serveur
  5. Manipulation des événements de diffusion
  6. Conclusion

1. Introduction

Le broadcasting dans Laravel permet de diffuser des événements en temps réel entre votre serveur et vos clients via des technologies comme WebSockets ou Pusher. Ce tutoriel vous guidera à travers la mise en place et l'utilisation du broadcasting dans une application Laravel.

Mindmap avec Mermaid.js

mindmap root(Tutoriel) Introduction Présentation du concept de Broadcasting Installation côté client Installation côté serveur Manipulation des événements de diffusion Conclusion

2. Présentation du concept de Broadcasting

Le broadcasting permet de transmettre des messages en temps réel entre votre serveur et vos clients. Cela est particulièrement utile pour des fonctionnalités comme les notifications en temps réel, les mises à jour de chat, les mises à jour de statut, etc.

Mindmap des concepts avec Mermaid.js

mindmap root(Broadcasting) Concept Envoi en temps réel Notifications Chat en temps réel Mises à jour de statut Technologies WebSockets Pusher Redis Sockets.IO

Graphique des concepts avec Mermaid.js

graph TD; A[Concept] --> B[Envoi en temps réel]; A --> C[Notifications]; A --> D[Chat en temps réel]; A --> E[Mises à jour de statut]; F[Technologies] --> G[WebSockets]; F --> H[Pusher]; F --> I[Redis]; F --> J[Sockets.IO];

3. Installation côté client

Pour utiliser le broadcasting côté client, vous aurez besoin de bibliothèques JavaScript comme Pusher JS ou Socket.IO.

Installation de Pusher JS

  1. Installez Pusher JS via npm ou yarn :

    npm install pusher-js
    

    ou

    yarn add pusher-js
    
  2. Importez Pusher JS dans votre fichier JavaScript principal (par exemple, resources/js/app.js) :

    import Pusher from 'pusher-js';
    
    window.Pusher = Pusher;
    
  3. Configurez Pusher avec vos clés d'API :

    const pusher = new Pusher('your-pusher-key', {
        cluster: 'your-cluster',
        forceTLS: true
    });
    
    const channel = pusher.subscribe('my-channel');
    channel.bind('my-event', function(data) {
        console.log('Received:', data);
    });
    

Installation de Socket.IO

  1. Installez Socket.IO via npm ou yarn :

    npm install socket.io-client
    

    ou

    yarn add socket.io-client
    
  2. Importez Socket.IO dans votre fichier JavaScript principal (par exemple, resources/js/app.js) :

    import io from 'socket.io-client';
    
    window.io = io;
    
    const socket = io('http://localhost:6001');
    
    socket.on('my-event', function(data) {
        console.log('Received:', data);
    });
    

4. Installation côté serveur

Pour utiliser le broadcasting côté serveur, vous aurez besoin de configurer Laravel pour utiliser un driver de broadcasting comme Pusher, Redis ou Sockets.IO.

Configuration de Pusher

  1. Installez le package Pusher Laravel :

    composer require pusher/pusher-php-server
    
  2. Configurez les variables d'environnement dans .env :

    BROADCAST_DRIVER=pusher
    PUSHER_APP_ID=your-app-id
    PUSHER_APP_KEY=your-app-key
    PUSHER_APP_SECRET=your-app-secret
    PUSHER_APP_CLUSTER=your-cluster
    PUSHER_USE_TLS=true
    
  3. Configurez le fichier config/broadcasting.php pour utiliser Pusher :

    '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' => env('PUSHER_USE_TLS') === 'true',
            ],
        ],
    
    ],
    

Configuration de Redis

  1. Installez Redis sur votre machine.

  2. Installez le package Laravel Echo pour gérer les événements en temps réel :

    npm install laravel-echo pusher-js
    

    ou

    yarn add laravel-echo pusher-js
    
  3. Configurez les variables d'environnement dans .env :

    BROADCAST_DRIVER=redis
    QUEUE_CONNECTION=redis
    
  4. Configurez le fichier config/broadcasting.php pour utiliser Redis :

    'connections' => [
    
        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],
    
    ],
    
  5. Configurez Laravel Echo dans resources/js/bootstrap.js :

    import Echo from 'laravel-echo';
    import Pusher from 'pusher-js';
    
    window.Pusher = Pusher;
    
    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        cluster: process.env.MIX_PUSHER_APP_CLUSTER,
        forceTLS: true
    });
    

Configuration de Sockets.IO

  1. Installez le package Laravel Echo pour gérer les événements en temps réel :

    npm install laravel-echo socket.io-client
    

    ou

    yarn add laravel-echo socket.io-client
    
  2. Configurez les variables d'environnement dans .env :

    BROADCAST_DRIVER=pusher
    PUSHER_APP_ID=your-app-id
    PUSHER_APP_KEY=your-app-key
    PUSHER_APP_SECRET=your-app-secret
    PUSHER_APP_CLUSTER=your-cluster
    PUSHER_USE_TLS=true
    
  3. Configurez le fichier config/broadcasting.php pour utiliser Pusher (ou configurez Sockets.IO manuellement) :

    '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' => env('PUSHER_USE_TLS') === 'true',
            ],
        ],
    
    ],
    
  4. Configurez Laravel Echo dans resources/js/bootstrap.js :

    import Echo from 'laravel-echo';
    import io from 'socket.io-client';
    
    window.io = io;
    
    window.Echo = new Echo({
        broadcaster: 'socket.io',
        host: window.location.hostname + ':6001'
    });
    

5. Manipulation des événements de diffusion

Création d'un événement

  1. Créez un événement Laravel :

    php artisan make:event StatusUpdated
    
  2. Implémentez l'événement dans app/Events/StatusUpdated.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\Foundation\Events\Dispatchable;
    use Illuminate\Queue\SerializesModels;
    
    class StatusUpdated implements ShouldBroadcast
    {
        use Dispatchable, InteractsWithSockets, SerializesModels;
    
        public $status;
    
        public function __construct($status)
        {
            $this->status = $status;
        }
    
        public function broadcastOn()
        {
            return new Channel('status-channel');
        }
    }
    

Diffusion de l'événement

  1. Dans votre contrôleur ou service, déclenchez l'événement :

    use App\Events\StatusUpdated;
    
    public function updateStatus($status)
    {
        event(new StatusUpdated($status));
    }
    

Écoute de l'événement côté client

  1. Écoutez l'événement dans votre fichier JavaScript principal (par exemple, resources/js/app.js) :

    window.Echo.channel('status-channel')
        .listen('StatusUpdated', (e) => {
            console.log('Status updated:', e.status);
        });
    

Exemple complet

Événement StatusUpdated

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\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

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

    public $status;

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

    public function broadcastOn()
    {
        return new Channel('status-channel');
    }
}

Contrôleur

namespace App\Http\Controllers;

use App\Events\StatusUpdated;

class StatusController extends Controller
{
    public function update($status)
    {
        event(new StatusUpdated($status));
        return response()->json(['message' => 'Status updated']);
    }
}

Fichier JavaScript (resources/js/app.js)

import Echo from 'laravel-echo';
import Pusher from 'pusher-js';

window.Pusher = Pusher;

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('status-channel')
    .listen('StatusUpdated', (e) => {
        console.log('Status updated:', e.status);
    });

6. Conclusion

Nous avons maintenant exploré le concept de broadcasting dans Laravel, comment installer les bibliothèques nécessaires côté client et serveur, et comment manipuler les événements de diffusion. Le broadcasting est un outil puissant pour ajouter des fonctionnalités en temps réel à votre application Laravel.

Mindmap finale avec Mermaid.js

mindmap root(Tutoriel Terminé) Introduction Présentation du concept de Broadcasting Installation côté client Pusher JS Socket.IO Installation côté serveur Pusher Redis Sockets.IO Manipulation des événements de diffusion Conclusion

Graphique final avec Mermaid.js

graph TD; A[Introduction] --> B[Présentation du concept de Broadcasting]; B --> C[Concept]; B --> D[Technologies]; C --> E[Envoi en temps réel]; C --> F[Notifications]; C --> G[Chat en temps réel]; C --> H[Mises à jour de statut]; D --> I[WebSockets]; D --> J[Pusher]; D --> K[Redis]; D --> L[Sockets.IO]; M[Installation côté client] --> N[Pusher JS]; M --> O[Socket.IO]; N --> P[Installer Pusher JS]; N --> Q[Importer Pusher JS]; N --> R[Configurer Pusher]; O --> S[Installer Socket.IO]; O --> T[Importer Socket.IO]; O --> U[Configurer Socket.IO]; V[Installation côté serveur] --> W[Pusher]; V --> X[Redis]; V --> Y[Sockets.IO]; W --> Z[Installer Pusher Laravel]; W --> AA[Configurer .env]; W --> AB[Configurer broadcasting.php]; X --> AC[Installer Redis]; X --> AD[Configurer .env]; X --> AE[Configurer broadcasting.php]; X --> AF[Configurer Laravel Echo]; Y --> AG[Installer Laravel Echo]; Y --> AH[Configurer .env]; Y --> AI[Configurer broadcasting.php]; Y --> AJ[Configurer Laravel Echo]; BB[Manipulation des événements de diffusion] --> BC[Création d'un événement]; BC --> BD[Implémenter l'événement]; BB --> BE[Diffusion de l'événement]; BE --> BF[Déclencher l'événement]; BB --> BG[Écoute de l'événement côté client]; BG --> BH[Écouter l'événement];

J'espère que ce tutoriel vous a été utile ! N'hésitez pas à poser des questions si vous avez besoin de plus d'informations.