Skip to main content
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-Befehl install:broadcasting installieren Sie inklusive Reverb alle nötigen Abhängigkeiten auf einmal.
Wählen Sie beim Ausführen Reverb aus – oder verwenden Sie die Option --reverb, um Reverb automatisch einzurichten.
Der Befehl erledigt:
  • 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
Für die manuelle Installation fügen Sie das Paket per Composer hinzu und führen anschließend reverb:install aus.

Konfiguration

App-Anmeldedaten

Konfigurieren Sie in Umgebungsvariablen die Anmeldedaten, mit denen Clients und Server ihre Verbindung aufbauen.
Diese Werte werden im Abschnitt apps von config/reverb.php referenziert.

Zulässige Origins (Allowed Origins)

Über allowed_origins in config/reverb.php beschränken Sie, welche Origins Clients akzeptieren.
Um alle Origins zuzulassen, verwenden Sie *.

Mehrere Anwendungen

Ein Reverb-Server kann mehrere Anwendungen bedienen. Ergänzen Sie im Array apps 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.
Manuelle Zertifikatspfade setzen Sie über die Option tls in config/reverb.php.

Server starten

Starten Sie den Server mit dem Artisan-Befehl reverb:start.
Standardmäßig hört Reverb auf 0.0.0.0:8080. Adresse und Port können Sie mit --host / --port anpassen.
Auch per Umgebungsvariable möglich:
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.
Wenn Sie einen Prozessmanager wie Supervisor verwenden, startet er sich automatisch neu.

Monitoring

Reverb unterstützt die Integration mit Laravel Pulse. So sehen Sie Verbindungs- und Nachrichtenzahlen in Echtzeit im Dashboard. Fügen Sie zunächst in config/pulse.php die Reverb-Recorders hinzu.
Und dann Cards ins Pulse-Dashboard einbinden:
Damit Verbindungen korrekt erfasst werden, muss der Daemon 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.
Anpassen in /etc/security/limits.conf:

Event-Loop (ext-uv)

Standardmäßig verwendet Reverb PHPs stream_select, das jedoch auf 1024 Dateien begrenzt ist. Für mehr als 1000 gleichzeitige Verbindungen installieren Sie ext-uv, um dieses Limit aufzuheben.
Wenn 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:
Reverb nimmt WebSocket-Verbindungen unter /app und API-Anfragen unter /apps entgegen. Erlauben Sie in der Webserver-Konfiguration den Zugriff auf beide URIs.
Um mehr gleichzeitige Verbindungen zu ermöglichen, passen Sie in der nginx.conf worker_rlimit_nofile und worker_connections an.

Prozessverwaltung (Supervisor)

In Produktion verwalten Sie den Reverb-Prozess mit Supervisor. Setzen Sie minfds in der supervisor.conf, damit ausreichend Filedescriptoren zur Verfügung stehen.
Beispielkonfiguration für Supervisor:

Skalierung (Redis)

Wenn ein einzelner Server nicht mehr genügt, ermöglicht Redis Pub/Sub horizontale Skalierung. Aktivieren Sie die Skalierung in der .env:
Reverb tauscht mit der Standard-Redis-Verbindung Nachrichten zwischen Servern aus. Starten Sie mehrere Reverb-Server und verteilen Sie die Requests über einen Load Balancer.
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. Alle Events liegen im Namespace 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
Zuletzt geändert am 13. Juli 2026