Diese Seite behandelt Setup und Betrieb des Reverb-Servers selbst.
Für das Anlegen von Broadcasting-Events und die Nutzung von Laravel Echo siehe Broadcasting.
Was ist Reverb
Laravel Reverb ist ein von Laravel offiziell bereitgestellter, selbst gehosteter WebSocket-Server. Ohne Abhängigkeit von externen Diensten fügen Sie Ihrer Anwendung schnelle, skalierbare Echtzeitkommunikation hinzu. Reverb setzt auf der Broadcasting-Infrastruktur auf und liefert serverseitige Events per WebSocket an den Browser.Installation
Mit dem Artisan-Befehlinstall:broadcasting installieren Sie inklusive Reverb alle nötigen Abhängigkeiten auf einmal.
--reverb, um Reverb automatisch einzurichten.
- Installation des Composer-Pakets (
laravel/reverb) - Installation der npm-Pakete (
laravel-echo,pusher-js) - Ergänzung der Umgebungsvariablen in der
.env - Erzeugung von
config/reverb.php
reverb:install aus.
Konfiguration
App-Anmeldedaten
Konfigurieren Sie in Umgebungsvariablen die Anmeldedaten, mit denen Clients und Server ihre Verbindung aufbauen.apps von config/reverb.php referenziert.
Zulässige Origins (Allowed Origins)
Überallowed_origins in config/reverb.php beschränken Sie, welche Origins Clients akzeptieren.
*.
Mehrere Anwendungen
Ein Reverb-Server kann mehrere Anwendungen bedienen. Ergänzen Sie im Arrayapps in config/reverb.php mehrere Einträge.
SSL
In Produktion terminiert typischerweise ein Webserver wie Nginx TLS und leitet die Requests an Reverb weiter. Wollen Sie in der lokalen Entwicklung Secure WebSockets (wss://) verwenden, nutzen Sie z. B. die Zertifikate von Laravel Herd oder Valet.
tls in config/reverb.php.
Server starten
Starten Sie den Server mit dem Artisan-Befehlreverb:start.
0.0.0.0:8080.
Adresse und Port können Sie mit --host / --port anpassen.
REVERB_SERVER_HOST / REVERB_SERVER_PORT sind die Listen-Adresse des Servers.
REVERB_HOST / REVERB_PORT geben die Adresse an, an die die Laravel-App Broadcast-Nachrichten sendet.
In Produktion können sich beide unterscheiden.Debug-Modus
Aus Performance-Gründen gibt Reverb standardmäßig keine Debug-Informationen aus. Um Verbindungen und Nachrichtenflüsse zu verfolgen, verwenden Sie--debug.
Server neu starten
Da Reverb ein Daemon ist, müssen Sie ihn nach Codeänderungen neu starten.reverb:restart beendet alle Verbindungen sauber und stoppt den Server anschließend.
Monitoring
Reverb unterstützt die Integration mit Laravel Pulse. So sehen Sie Verbindungs- und Nachrichtenzahlen in Echtzeit im Dashboard. Fügen Sie zunächst inconfig/pulse.php die Reverb-Recorders hinzu.
pulse:check auf dem Reverb-Server laufen.
In horizontal skalierten Setups sollten Sie pulse:check auf genau einem Server ausführen.
Produktivbetrieb
File-Open-Limit
Jede WebSocket-Verbindung belegt einen Filedescriptor. Prüfen Sie das OS-Limit und heben Sie es bei Bedarf an./etc/security/limits.conf:
Event-Loop (ext-uv)
Standardmäßig verwendet Reverb PHPsstream_select, das jedoch auf 1024 Dateien begrenzt ist.
Für mehr als 1000 gleichzeitige Verbindungen installieren Sie ext-uv, um dieses Limit aufzuheben.
ext-uv verfügbar ist, verwendet Reverb es automatisch.
Nginx als Reverse-Proxy
Stellen Sie Reverb in Produktion nicht direkt bereit, sondern hinter einem Webserver wie Nginx. Beispielkonfiguration:nginx.conf worker_rlimit_nofile und worker_connections an.
Prozessverwaltung (Supervisor)
In Produktion verwalten Sie den Reverb-Prozess mit Supervisor. Setzen Sieminfds in der supervisor.conf, damit ausreichend Filedescriptoren zur Verfügung stehen.
Skalierung (Redis)
Wenn ein einzelner Server nicht mehr genügt, ermöglicht Redis Pub/Sub horizontale Skalierung. Aktivieren Sie die Skalierung in der.env:
Laravel Cloud bietet vollständig verwaltete WebSocket-Infrastruktur, mit der Sie Reverb-Anwendungen ohne eigene Infrastrukturverwaltung deployen.
Events
Reverb feuert im Lebenszyklus von Verbindungen und Nachrichten folgende Events. Sie können sie mit Event-Listenern verarbeiten.| Event | Beschreibung |
|---|---|
ChannelCreated | Wenn ein Channel angelegt wird (erstes Abonnement) |
ChannelRemoved | Wenn ein Channel entfernt wird (letztes Abonnement gekündigt) |
ConnectionPruned | Wenn der Server eine alte Verbindung schließt |
MessageReceived | Wenn eine Nachricht vom Client empfangen wird |
MessageSent | Wenn eine Nachricht an den Client gesendet wird |
Laravel\Reverb\Events.
Nächste Schritte
Broadcasting
Erstellen von Broadcast-Events, Channel-Autorisierung und die Konfiguration von Laravel Echo
Events und Listener
So verarbeiten Sie die Events, die Reverb feuert, im Laravel-Eventsystem