Skip to main content
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.
Sélectionnez Reverb pendant l’exécution, ou passez --reverb.
Cette commande :
  • 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
Installation manuelle :

Configuration

Identifiants d’application

Définis via variables d’environnement.
Ces valeurs sont lues dans la section apps de config/reverb.php.

Origines autorisées

Limitez les origines client dans allowed_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.
Certificat manuel via tls dans config/reverb.php.

Démarrer le serveur

Écoute par défaut sur 0.0.0.0:8080. Personnalisez avec --host / --port.
Ou via variables :
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.
Un superviseur (Supervisor…) relance ensuite le process.

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.
Ajoutez les cartes à la vue Pulse.
Pour enregistrer les connexions, lancez 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.
Dans /etc/security/limits.conf :

Boucle d’événements (ext-uv)

Par défaut, Reverb utilise stream_select (limité à 1 024 fichiers). Au-delà de 1 000 connexions simultanées, installez ext-uv.
Reverb l’utilise automatiquement si disponible.

Proxy Nginx

En production, proxifiez via Nginx.
Reverb accepte les WebSocket sur /app et les requêtes API sur /apps. Autorisez les deux dans votre config serveur.
Ajustez 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.
Exemple :

Scaling avec Redis

Pour dépasser un seul serveur, activez le pub/sub Redis. Activation via .env :
Reverb utilise la connexion Redis par défaut pour échanger les messages entre serveurs. Lancez plusieurs instances et répartissez via un load balancer.
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. Tous dans le namespace 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.
Dernière modification le 13 juillet 2026