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-commandoinstall:broadcasting installeer je in één keer alle afhankelijkheden, inclusief Reverb.
--reverb om Reverb automatisch op te zetten.
- 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
reverb:install uit.
Configuratie
Applicatiecredentials
De credentials waarmee client en server een verbinding opzetten configureer je via omgevingsvariabelen.apps van config/reverb.php.
Toegestane origins (allowed origins)
Je kunt de origins waarvan clientrequests worden toegestaan beperken viaallowed_origins in config/reverb.php.
* op.
Meerdere apps ondersteunen
Eén Reverb-server kan meerdere applicaties bedienen. Voeg meerdere entries toe aan deapps-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.
tls in config/reverb.php in.
De server starten
Start de server met het Artisan-commandoreverb:start.
0.0.0.0:8080.
Met de opties --host / --port geef je een eigen adres op.
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 commandoreverb:restart beëindigt eerst alle verbindingen op een nette (graceful) manier en stopt daarna de server.
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 aanconfig/pulse.php.
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./etc/security/limits.conf.
Event loop (ext-uv)
Reverb gebruikt standaard PHP’sstream_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.
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.worker_rlimit_nofile en worker_connections in nginx.conf aan.
Procesbeheer (Supervisor)
In productie beheer je het Reverb-proces met Supervisor. Stelminfds in supervisor.conf in om voldoende file descriptors te reserveren.
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.
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