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-Befehlinstall:broadcasting.
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 Befehlinstall:broadcasting mit der Option --reverb aufgerufen, werden die notwendigen Composer- und NPM-Pakete für Reverb installiert und die .env in einem Schritt konfiguriert.
Wichtige Einstellungen in der .env
Reverb-Server starten
Broadcast-Event erstellen
Event-Klasse erzeugen
ShouldBroadcast implementieren.
ShouldBroadcast wird das Event beim Auslösen automatisch über die Queue broadcastet.
Broadcast-Daten anpassen
Standardmäßig werden allepublic-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. MitbroadcastAs können Sie einen eigenen Namen festlegen.
., um das Namespace-Präfix der Anwendung zu unterdrücken.
Channel-Typen
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 Dateiroutes/channels.php, die vom Befehl install:broadcasting erzeugt wird.
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.routes/channels.php.
Events auslösen
Events, dieShouldBroadcast implementieren, werden wie gewöhnliche Events ausgelöst.
toOthers.
Empfang im Frontend
Laravel Echo einrichten
Wenn Sie Reverb verwenden, konfigurieren Sie inresources/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.useEcho verlässt den Channel beim Unmounten der Komponente automatisch.
Praxisbeispiel: Bestellstatus in Echtzeit aktualisieren
1
Broadcasting aktivieren
2
Event-Klasse erstellen
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.