Skip to main content

Was ist Broadcasting?

Mit WebSockets können Daten in Echtzeit vom Server zum Client gesendet werden. Das Broadcasting von Laravel ist ein Mechanismus, der serverseitige Events per WebSocket an das JavaScript im Frontend ausliefert. Wenn sich zum Beispiel der Status einer Bestellung ändert, kann die Änderung im Browser sofort dargestellt werden, ohne dass die Seite neu geladen werden muss. Die Stärke von Laravels Broadcasting liegt darin, dass Sie den Event-Namen und die Daten der Serverseite unverändert mit der Clientseite teilen können.
Broadcasting baut auf dem Event-System von Laravel auf. Wir empfehlen, zunächst die Grundlagen zu Events und Listenern zu verstehen.

Einrichtung

In neuen Laravel-Anwendungen ist Broadcasting standardmäßig deaktiviert. Aktivieren Sie es mit dem Artisan-Befehl install:broadcasting.
Dieser Befehl fragt Sie nach dem gewünschten Broadcast-Dienst. Zudem werden config/broadcasting.php und routes/channels.php erzeugt.

Laravel Reverb

Ab Laravel 11 wird der offizielle WebSocket-Server Laravel Reverb empfohlen. Reverb ist selbst gehostet und ermöglicht Echtzeitkommunikation, ohne dass zusätzliche externe Dienste erforderlich sind.

Installation

Wird der Befehl install:broadcasting mit der Option --reverb aufgerufen, werden die notwendigen Composer- und NPM-Pakete für Reverb installiert und die .env in einem Schritt konfiguriert.
Für eine manuelle Installation fügen Sie das Paket zunächst über Composer hinzu und führen dann den Installationsbefehl aus.

Wichtige Einstellungen in der .env

Reverb-Server starten

In der Produktion verwalten Sie den Server als Daemon über einen Prozessmanager wie Supervisor.
Broadcast-Events werden über die Queue verarbeitet. Sie müssen daher zusätzlich zum Reverb-Server auch einen Queue-Worker starten.

Broadcast-Event erstellen

Event-Klasse erzeugen

Lassen Sie die erzeugte Event-Klasse das Interface ShouldBroadcast implementieren.
Durch die Implementierung von ShouldBroadcast wird das Event beim Auslösen automatisch über die Queue broadcastet.

Broadcast-Daten anpassen

Standardmäßig werden alle public-Eigenschaften der Event-Klasse in den Broadcast-Payload aufgenommen. Definieren Sie die Methode broadcastWith, um die gesendeten Daten einzuschränken.

Broadcast-Namen anpassen

Standardmäßig ist der Klassenname zugleich der Event-Name. Mit broadcastAs können Sie einen eigenen Namen festlegen.
Wenn Sie im Frontend darauf hören, setzen Sie einen führenden ., um das Namespace-Präfix der Anwendung zu unterdrücken.

Channel-Typen

Um auf mehreren Channels zu broadcasten, geben Sie ein Array zurück.

Channel-Autorisierung

Für Private- und Presence-Channels findet vor dem Abonnieren eine serverseitige Autorisierungsprüfung statt.

routes/channels.php

Definieren Sie den Autorisierungs-Callback in der Datei routes/channels.php, die vom Befehl install:broadcasting erzeugt wird.
Der erste Parameter des Callbacks ist der authentifizierte Benutzer, die weiteren Parameter entsprechen den Platzhaltern im Channel-Namen. Bei einer Rückgabe von true oder einem truthy-Wert ist die Autorisierung erfolgreich, false führt zur Ablehnung.
Auch Route Model Binding lässt sich verwenden. Verwenden Sie den Channel-Namen orders.{order}, erhalten Sie eine Order-Modellinstanz.

Autorisierung über eine Channel-Klasse

Wenn die Anzahl der Channels wächst, können Sie diese über Channel-Klassen strukturieren.
Registrieren Sie die Klasse in routes/channels.php.

Events auslösen

Events, die ShouldBroadcast implementieren, werden wie gewöhnliche Events ausgelöst.
Um das Event allen anderen Benutzern außer dem auslösenden zu senden, verwenden Sie toOthers.
Für toOthers muss die Event-Klasse das Trait InteractsWithSockets verwenden.

Empfang im Frontend

Laravel Echo einrichten

Wenn Sie Reverb verwenden, konfigurieren Sie in resources/js/bootstrap.js die Echo-Instanz.

Auf Events hören

React- und Vue-Hooks nutzen

Bei den React- und Vue-Starter-Kits stehen spezielle Hooks zur Verfügung, mit denen der Code kompakter ausfällt.
Der Hook useEcho verlässt den Channel beim Unmounten der Komponente automatisch.
Stellen Sie vor dem Build der Frontend-Assets sicher, dass die Variablen VITE_REVERB_* in Ihrer .env korrekt gesetzt sind.

Praxisbeispiel: Bestellstatus in Echtzeit aktualisieren

1

Broadcasting aktivieren

Starten Sie den Reverb-Server und einen Queue-Worker.
2

Event-Klasse erstellen

Bearbeiten Sie app/Events/OrderShipmentStatusUpdated.php.
3

Channel-Autorisierung definieren

Ergänzen Sie in routes/channels.php die Autorisierungslogik.
4

Event auslösen

Lösen Sie das Event in einem Controller oder Job aus, der den Bestellstatus aktualisiert.
5

Im Frontend darauf hören

Empfangen Sie das Event über ein Inline-Script in einem Blade-Template oder in einer React-/Vue-Komponente.

Nächste Schritte

Laravel Reverb

Erfahren Sie mehr über die Einrichtung des Reverb-Servers, den Betrieb in der Produktion und Skalierung.

Queues und Jobs

Broadcasting wird über die Queue verarbeitet. Erfahren Sie, wie Sie Queues konfigurieren und betreiben.

Events und Listener

Vertiefen Sie sich in das Event-System von Laravel, das die Grundlage für Broadcasting bildet.
Zuletzt geändert am 13. Juli 2026