Skip to main content

Cos’è il broadcasting

Con i WebSocket puoi inviare dati in tempo reale dal server al client. Il broadcasting di Laravel è il meccanismo che veicola gli eventi lato server al JavaScript frontend via WebSocket. Ad esempio, al cambio di stato di un ordine, puoi mostrare l’aggiornamento subito nel browser senza ricaricare la pagina. La forza del broadcasting di Laravel è condividere direttamente nome dell’evento e dati tra server e client.
Il broadcasting è costruito sul sistema di eventi di Laravel. Padroneggia prima le basi di Eventi e listener.

Setup

Nelle nuove app Laravel il broadcasting è disabilitato di default. Attivalo con il comando Artisan install:broadcasting.
Ti verrà chiesto quale servizio usare. Vengono creati config/broadcasting.php e routes/channels.php.

Laravel Reverb

Da Laravel 11 in poi si consiglia il server WebSocket ufficiale Laravel Reverb. Reverb è self-hosted e realizza la comunicazione real-time senza servizi esterni.

Installazione

Con l’opzione --reverb del comando install:broadcasting esegui in blocco l’installazione dei pacchetti Composer/NPM e la configurazione di .env.
Manualmente:

Valori principali in .env

Avvio del server Reverb

In produzione gestiscilo come demone con Supervisor o simili.
Gli eventi broadcast passano per la coda. Oltre a Reverb devi avere anche i queue worker attivi.

Creazione di eventi broadcast

Genera la classe evento

Fai implementare ShouldBroadcast.
Basta implementare ShouldBroadcast e l’evento viene trasmesso automaticamente via coda.

Personalizzare il payload

Di default vengono trasmesse tutte le proprietà public. Per filtrare usa broadcastWith.

Nome dell’evento personalizzato

Di default il nome è quello della classe. Cambialo con broadcastAs.
Nel frontend anteponi . per disabilitare il prefisso del namespace.

Tipi di canale

Per più canali restituisci un array.

Autorizzazione dei canali

I canali Private e Presence effettuano un controllo di autorizzazione lato server prima della sottoscrizione.

routes/channels.php

Definisci le callback in routes/channels.php (creato da install:broadcasting).
Il primo argomento è l’utente autenticato, gli altri sono le wildcard nel nome del canale. Restituisci true (o truthy) per autorizzare, false per negare.
Puoi usare il route model binding. Con nome canale orders.{order}, viene passata un’istanza Order.

Classi di canale per l’autorizzazione

Se i canali crescono organizza con classi.
Registra in routes/channels.php.

Emettere gli eventi

Gli eventi con ShouldBroadcast si emettono come i normali eventi.
Per non inviarli anche a se stessi usa toOthers.
toOthers richiede che la classe evento usi il trait InteractsWithSockets.

Ricezione nel frontend

Setup di Laravel Echo

Con Reverb, configura Echo in resources/js/bootstrap.js.

Ascolto degli eventi

Hook React / Vue

Con gli starter kit React/Vue puoi usare hook dedicati.
useEcho abbandona automaticamente il canale allo unmount del componente.
Prima del build assicurati che .env contenga le VITE_REVERB_* corrette.

Esempio pratico: aggiornamento in tempo reale dello stato di un ordine

1

Attiva il broadcasting

Avvia server Reverb e worker.
2

Crea l'evento

3

Definisci l'autorizzazione del canale

4

Emetti l'evento

Dopo l’aggiornamento dello stato dell’ordine, in un controller o job:
5

Ricevi nel frontend

Da template Blade o componente React/Vue:

Prossimi passi

Laravel Reverb

Setup, esercizio in produzione e scaling del server Reverb.

Code e job

Il broadcasting passa per la coda: configura e gestisci le code.

Eventi e listener

Il sistema di eventi di Laravel alla base del broadcasting.
Ultima modifica il 13 luglio 2026