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.
Aucun commentaire pour le moment.