Cette page couvre la mise en place et l’exploitation de Reverb.
Pour la création d’événements de broadcast et l’utilisation de Laravel Echo, consultez Broadcasting.
Qu’est-ce que Reverb
Laravel Reverb est le serveur WebSocket self-hosted officiel de Laravel. Ajoutez du temps réel rapide et scalable à votre application sans dépendance à un service externe. Reverb repose sur l’infrastructure de broadcasting et transporte les événements serveur vers le navigateur via WebSocket.Installation
install:broadcasting installe Reverb et toutes ses dépendances en une commande.
--reverb.
- installe le package Composer
laravel/reverb - installe les packages NPM
laravel-echo,pusher-js - ajoute les variables d’environnement dans
.env - génère
config/reverb.php
Configuration
Identifiants d’application
Définis via variables d’environnement.apps de config/reverb.php.
Origines autorisées
Limitez les origines client dansallowed_origins.
* pour tout autoriser.
Support multi-applications
Un même serveur Reverb peut servir plusieurs applications.SSL
En production, un serveur web (Nginx) termine généralement le SSL et proxie vers Reverb. En local, utilisez les certificats Laravel Herd ou Valet pour du WSS.tls dans config/reverb.php.
Démarrer le serveur
0.0.0.0:8080. Personnalisez avec --host / --port.
REVERB_SERVER_HOST / REVERB_SERVER_PORT : adresse d’écoute du serveur.
REVERB_HOST / REVERB_PORT : adresse à laquelle l’application envoie les messages de broadcast.
Elles peuvent différer en production.Mode debug
Par défaut, Reverb ne loggue pas pour la performance. Pour voir connexions et messages, utilisez--debug.
Redémarrage
Reverb est un process long-running : un redémarrage est nécessaire à chaque modification.reverb:restart termine les connexions proprement puis arrête le serveur.
Supervision
Reverb s’intègre à Laravel Pulse pour afficher nombre de connexions et de messages en temps réel. Ajoutez les recorders Reverb àconfig/pulse.php.
pulse:check sur le serveur Reverb.
En scaling horizontal, pulse:check ne s’exécute que sur un seul serveur.
Exploitation en production
Limites de fichiers ouverts
Chaque connexion WebSocket consomme un file descriptor. Vérifiez et augmentez la limite OS./etc/security/limits.conf :
Boucle d’événements (ext-uv)
Par défaut, Reverb utilisestream_select (limité à 1 024 fichiers).
Au-delà de 1 000 connexions simultanées, installez ext-uv.
Proxy Nginx
En production, proxifiez via Nginx.worker_rlimit_nofile et worker_connections dans nginx.conf.
Gestion des processus (Supervisor)
En production, gérez Reverb via Supervisor.minfds fournit les file descriptors nécessaires.
Scaling avec Redis
Pour dépasser un seul serveur, activez le pub/sub Redis. Activation via.env :
Laravel Cloud fournit une infrastructure WebSocket entièrement managée pour Reverb.
Événements
Reverb émet des événements de cycle de vie des connexions/messages ; écoutez-les via les listeners.| Événement | Description |
|---|---|
ChannelCreated | Création de canal (première souscription) |
ChannelRemoved | Suppression de canal (dernier désabonnement) |
ConnectionPruned | Ancienne connexion déconnectée par le serveur |
MessageReceived | Message reçu d’un client |
MessageSent | Message envoyé à un client |
Laravel\Reverb\Events.
Prochaines étapes
Broadcasting
Création d’événements de broadcast, autorisation de canaux, Laravel Echo.
Événements et listeners
Utilisez le système d’événements Laravel pour réagir aux événements Reverb.