Développement

WebSockets avec Laravel Reverb — Le temps réel simplifié

WebSockets avec Laravel Reverb — Le temps réel simplifié

Laravel Reverb est le nouveau serveur WebSocket officiel, ultra-rapide et intégré à Laravel.

Installation

# Installer Reverb
composer require laravel/reverb
php artisan reverb:install

# Installer le client JS
npm install --save-dev laravel-echo pusher-js

Configuration

# .env
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=votre_id
REVERB_APP_KEY=votre_key
REVERB_APP_SECRET=votre_secret
REVERB_HOST="localhost"
REVERB_PORT=8080
REVERB_SCHEME=http

Créer un événement broadcast

php artisan make:event NewChatMessage
// app/Events/NewChatMessage.php
class NewChatMessage implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public function __construct(public string $message) {}

    public function broadcastOn(): array
    {
        // Canal public
        return [new Channel('chat')];
    }

    public function broadcastAs(): string
    {
        return 'new-message';
    }
}

Déclencher l'événement

// Dans un contrôleur
use App\Events\NewChatMessage;

public function sendMessage(Request $request)
{
    broadcast(new NewChatMessage($request->input('message')))->toOthers();
    return response()->json(['status' => 'Message sent!']);
}

Écouter côté client

// resources/js/bootstrap.js
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';

window.Pusher = Pusher;

window.Echo = new Echo({
    broadcaster: 'reverb',
    key: import.meta.env.VITE_REVERB_APP_KEY,
    wsHost: import.meta.env.VITE_REVERB_HOST,
    wsPort: import.meta.env.VITE_REVERB_PORT,
    wssPort: import.meta.env.VITE_REVERB_PORT,
    forceTLS: (import.meta.env.VITE_REVERB_SCHEME ?? 'https') === 'https',
    enabledTransports: ['ws', 'wss'],
});

// Écouter sur le canal
window.Echo.channel('chat')
    .listen('.new-message', (e) => {
        console.log('Nouveau message:', e.message);
        // Mettre à jour l'UI ici
    });

Démarrer le serveur

php artisan reverb:start

Reverb est une avancée majeure pour le temps réel en Laravel, simplifiant drastiquement l'architecture.

// Commentaires (0)

Connectez-vous pour laisser un commentaire.

Aucun commentaire pour le moment.