Skip to main content
Deze pagina richt zich op het opzetten en beheren van de Reverb-server zelf. Voor het maken van broadcast-events en het gebruik van Laravel Echo, zie Broadcasting.

Wat is Reverb

Laravel Reverb is de officiële, zelf-gehoste WebSocket-server van Laravel. Hiermee voeg je snelle en schaalbare realtime communicatie toe aan je Laravel-applicatie, zonder afhankelijk te zijn van externe diensten. Reverb draait bovenop de broadcasting-infrastructuur en zorgt ervoor dat server-side events via WebSockets bij de browser terechtkomen.

Installatie

Met het Artisan-commando install:broadcasting installeer je in één keer alle afhankelijkheden, inclusief Reverb.
Kies Reverb tijdens het uitvoeren van het commando, of voer het uit met de optie --reverb om Reverb automatisch op te zetten.
Dit commando doet het volgende:
  • Installeren van het Composer-pakket (laravel/reverb)
  • Installeren van de NPM-pakketten (laravel-echo, pusher-js)
  • Toevoegen van omgevingsvariabelen aan .env
  • Genereren van config/reverb.php
Wil je handmatig installeren, voeg dan het pakket toe via Composer en voer daarna reverb:install uit.

Configuratie

Applicatiecredentials

De credentials waarmee client en server een verbinding opzetten configureer je via omgevingsvariabelen.
Deze waarden worden gebruikt in de sectie apps van config/reverb.php.

Toegestane origins (allowed origins)

Je kunt de origins waarvan clientrequests worden toegestaan beperken via allowed_origins in config/reverb.php.
Wil je alle origins toestaan, geef dan * op.

Meerdere apps ondersteunen

Eén Reverb-server kan meerdere applicaties bedienen. Voeg meerdere entries toe aan de apps-array in config/reverb.php.

SSL-configuratie

In productie is het gebruikelijk dat een webserver zoals Nginx de SSL-terminatie verzorgt en de requests naar Reverb proxyt. Wil je in je lokale ontwikkelomgeving Secure WebSockets (wss://) gebruiken, dan kun je de certificaten van Laravel Herd of Valet benutten.
Wil je handmatig een certificaat opgeven, stel dan de optie tls in config/reverb.php in.

De server starten

Start de server met het Artisan-commando reverb:start.
Standaard start de server op 0.0.0.0:8080. Met de opties --host / --port geef je een eigen adres op.
Dit kan ook via omgevingsvariabelen.
REVERB_SERVER_HOST / REVERB_SERVER_PORT zijn het luisteradres van de server zelf. REVERB_HOST / REVERB_PORT zijn het adres waar je Laravel-app broadcastberichten naartoe stuurt. In productie kunnen deze van elkaar verschillen.

Debugmodus

Omwille van de performance geeft Reverb standaard geen debuginformatie weer. Wil je verbindingen en berichtenstromen bekijken, gebruik dan de optie --debug.

De server herstarten

Reverb is een langlopend proces; om codewijzigingen door te voeren is een herstart nodig. Het commando reverb:restart beëindigt eerst alle verbindingen op een nette (graceful) manier en stopt daarna de server.
Gebruik je een procesmanager zoals Supervisor, dan wordt de server na het stoppen automatisch opnieuw gestart.

Monitoring

Reverb ondersteunt integratie met Laravel Pulse. Zo kun je het aantal verbindingen en berichten realtime op een dashboard tonen. Voeg eerst de Reverb-recorders toe aan config/pulse.php.
Voeg vervolgens de kaarten toe aan de template van het Pulse-dashboard.
Start op de Reverb-server de pulse:check-daemon om de verbindingsstatus correct vast te leggen. Bij een horizontaal geschaalde opzet voer je pulse:check op slechts één server uit.

Draaien in productie

Limiet op open bestanden

Elke WebSocket-verbinding verbruikt één file descriptor. Controleer de limiet op OS-niveau en verhoog deze indien nodig.
De limiet pas je aan in /etc/security/limits.conf.

Event loop (ext-uv)

Reverb gebruikt standaard PHP’s stream_select, dat een limiet van maximaal 1.024 bestanden heeft. Verwerk je meer dan 1.000 gelijktijdige verbindingen, installeer dan ext-uv om deze limiet op te heffen.
Als ext-uv beschikbaar is, gebruikt Reverb deze automatisch.

Nginx als reverse proxy

Stel Reverb in productie niet rechtstreeks bloot, maar proxy het via een webserver zoals Nginx. Hieronder een voorbeeldconfiguratie voor Nginx.
Reverb accepteert WebSocket-verbindingen op /app en API-requests op /apps. Zorg dat je webserverconfiguratie toegang tot beide URI’s toestaat.
Om het aantal gelijktijdige verbindingen te verhogen, pas je worker_rlimit_nofile en worker_connections in nginx.conf aan.

Procesbeheer (Supervisor)

In productie beheer je het Reverb-proces met Supervisor. Stel minfds in supervisor.conf in om voldoende file descriptors te reserveren.
Een voorbeeldconfiguratie voor Supervisor:

Schalen (Redis)

Heb je meer verbindingen nodig dan één server aankan, dan is horizontaal schalen mogelijk via de pub/sub-functionaliteit van Redis. Schakel schalen in via .env.
Reverb gebruikt de standaard Redis-verbinding van je applicatie om berichten tussen servers uit te wisselen. Start meerdere Reverb-servers en verdeel de requests met een load balancer.
Laravel Cloud biedt volledig beheerde WebSocket-infrastructuur waarmee je Reverb-apps kunt deployen zonder zelf infrastructuur te beheren.

Events

Reverb verstuurt de volgende events tijdens de levenscyclus van verbindingen en berichten. Met event listeners kun je deze opvangen en er eigen logica aan koppelen. Al deze events horen bij de namespace Laravel\Reverb\Events.

Volgende stappen

Broadcasting

Bekijk hoe je broadcast-events maakt, kanalen autoriseert en Laravel Echo configureert

Events en listeners

Leer het eventsysteem van Laravel kennen om de events van Reverb op te vangen
Laatst gewijzigd op 6 september 2026