Wat is broadcasting
Met WebSockets kun je in realtime data van de server naar de client sturen. Laravel broadcasting is een mechanisme dat serverside events via WebSockets aflevert bij de JavaScript in je frontend. Wanneer bijvoorbeeld de status van een bestelling verandert, kun je die update direct in de browser tonen zonder de pagina te herladen. De kracht van Laravel broadcasting is dat je de serverside eventnamen en data één-op-één deelt met de clientside.Broadcasting is gebouwd bovenop het eventsysteem van Laravel.
We raden aan om eerst de basis van events en listeners te begrijpen.
Setup
In een nieuwe Laravel-applicatie is broadcasting standaard uitgeschakeld. Je schakelt het in met het Artisan-commandoinstall:broadcasting.
config/broadcasting.php en routes/channels.php gegenereerd.
Laravel Reverb
Vanaf Laravel 11 wordt de officiële WebSocket-server Laravel Reverb aanbevolen. Reverb is selfhosted en maakt realtime communicatie mogelijk zonder extra externe diensten.Installatie
Voeg je de optie--reverb toe aan het commando install:broadcasting, dan worden de benodigde Composer- en NPM-packages voor Reverb geïnstalleerd en wordt .env in één keer geconfigureerd.
De belangrijkste instellingen in .env
De Reverb-server starten
Een broadcast-event maken
De eventklasse genereren
ShouldBroadcast in de gegenereerde eventklasse.
ShouldBroadcast te implementeren, wordt het event bij het afvuren automatisch via de queue gebroadcast.
De broadcastdata aanpassen
Standaard worden allepublic properties van de eventklasse opgenomen in de broadcast-payload.
Wil je de te versturen data beperken, definieer dan de methode broadcastWith.
De broadcastnaam aanpassen
Standaard wordt de klassenaam de eventnaam. Met de methodebroadcastAs kun je een eigen naam opgeven.
. vooraan om het namespaceprefix van je app uit te schakelen.
Soorten kanalen
Kanaalautorisatie
Bij Private- en Presence-kanalen vindt vóór het abonneren een autorisatiecheck plaats aan de serverkant.routes/channels.php
Definieer autorisatiecallbacks in het bestandroutes/channels.php dat door het commando install:broadcasting wordt gegenereerd.
true of een truthy waarde terug, dan slaagt de autorisatie; geef je false terug, dan wordt geweigerd.
Route model binding werkt hier ook.
Noem je het kanaal
orders.{order}, dan krijg je een instantie van het Order-model doorgegeven.Autorisatie via channel-klassen
Krijg je steeds meer kanalen, dan kun je de boel organiseren met channel-klassen.routes/channels.php.
Events afvuren
Events dieShouldBroadcast implementeren, vuur je af zoals gewone events.
toOthers.
Ontvangen in de frontend
Laravel Echo instellen
Gebruik je Reverb, dan configureer je de Echo-instantie inresources/js/bootstrap.js.
Luisteren naar events
React- / Vue-hooks gebruiken
Gebruik je een starter kit voor React of Vue, dan kun je het compacter schrijven met de speciale hooks.useEcho-hook verlaat het kanaal automatisch wanneer de component wordt geünmount.
Praktijkvoorbeeld: bestelstatus in realtime bijwerken
1
Broadcasting inschakelen
2
De eventklasse maken
app/Events/OrderShipmentStatusUpdated.php.3
Kanaalautorisatie definiëren
Voeg de autorisatielogica toe aan
routes/channels.php.4
Het event afvuren
Vuur het event af in de controller of job die de bestelstatus bijwerkt.
5
Luisteren in de frontend
Ontvang het event met een inline script in je Blade-template of in een React/Vue-component.
Volgende stappen
Laravel Reverb
Lees meer over het opzetten van de Reverb-server, het draaien in productie en schalen.
Queues en jobs
Broadcasting wordt via de queue verwerkt. Bekijk hoe je queues configureert en beheert.
Events en listeners
Leer meer over het Laravel-eventsysteem, de basis van broadcasting.