Skip to main content

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-commando install:broadcasting.
Bij het uitvoeren van dit commando word je gevraagd welke broadcastdienst je wilt gebruiken. Ook worden 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.
Wil je handmatig installeren, voeg dan de package toe via Composer en voer daarna het installatiecommando uit.

De belangrijkste instellingen in .env

De Reverb-server starten

In productie beheer je Reverb als daemon met een procesmanager zoals Supervisor.
Broadcast-events worden via de queue verwerkt. Naast de Reverb-server moet je dus ook een queueworker draaien.

Een broadcast-event maken

De eventklasse genereren

Implementeer de interface ShouldBroadcast in de gegenereerde eventklasse.
Door alleen ShouldBroadcast te implementeren, wordt het event bij het afvuren automatisch via de queue gebroadcast.

De broadcastdata aanpassen

Standaard worden alle public 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 methode broadcastAs kun je een eigen naam opgeven.
Bij het luisteren in de frontend zet je een . vooraan om het namespaceprefix van je app uit te schakelen.

Soorten kanalen

Om naar meerdere kanalen te broadcasten, geef je een array terug.

Kanaalautorisatie

Bij Private- en Presence-kanalen vindt vóór het abonneren een autorisatiecheck plaats aan de serverkant.

routes/channels.php

Definieer autorisatiecallbacks in het bestand routes/channels.php dat door het commando install:broadcasting wordt gegenereerd.
Het eerste argument van de callback is de geauthenticeerde gebruiker; de argumenten daarna zijn de wildcards uit de kanaalnaam. Geef je 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.
Registreer de klasse in routes/channels.php.

Events afvuren

Events die ShouldBroadcast implementeren, vuur je af zoals gewone events.
Wil je alleen naar andere gebruikers broadcasten, met uitzondering van jezelf, gebruik dan toOthers.
Om toOthers te gebruiken, moet de eventklasse de trait InteractsWithSockets gebruiken.

Ontvangen in de frontend

Laravel Echo instellen

Gebruik je Reverb, dan configureer je de Echo-instantie in resources/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.
De useEcho-hook verlaat het kanaal automatisch wanneer de component wordt geünmount.
Controleer voordat je de frontend-assets bouwt of de VITE_REVERB_*-variabelen in .env correct zijn ingesteld.

Praktijkvoorbeeld: bestelstatus in realtime bijwerken

1

Broadcasting inschakelen

Start de Reverb-server en een queueworker.
2

De eventklasse maken

Bewerk 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.
Laatst gewijzigd op 6 september 2026