Vai al contenuto

Laravel Echo e Pusher: eventi privati e aggiornamenti in tempo reale

Laravel Echo riceve nel browser gli eventi trasmessi dal backend tramite un servizio di broadcasting come Pusher Channels. È utile per aggiornare una schermata quando cambia lo stato di un lavoro, senza chiedere continuamente al server se ci sono novità.

La parte decisiva è stabilire chi può ricevere ogni evento e come la schermata recupera lo stato quando perde la connessione. Una connessione WebSocket aperta non sostituisce l’autorizzazione alle risorse.

Preparare il progetto nella versione corretta

Per Laravel 12, la guida ufficiale al broadcasting con Pusher prevede il comando:

php artisan install:broadcasting --pusher

Il comando prepara configurazione e dipendenze pertinenti. Prima di usarlo in un progetto esistente, controllerei le modifiche prodotte e le integrazioni già presenti, evitando di sovrapporre due configurazioni Echo.

La chiave pubblica dell’applicazione Pusher può essere richiesta dal client; il secret resta sul backend. Le variabili inserite nel bundle frontend non sono un posto adatto a conservare credenziali riservate.

Autorizzare il canale della risorsa

Un canale pubblico è leggibile da chi può sottoscriverlo. Per stati di ordini, bozze o lavorazioni del cliente, userei canali privati e una verifica server dei permessi sulla risorsa richiesta.

Essere autenticati non significa poter leggere ogni ordine. Il controllo deve includere appartenenza al cliente corretto e permesso dell’utente, usando regole coerenti con le API che restituiscono i dati.

Il nome del canale non è un segreto sufficiente. Un identificatore difficile da indovinare non sostituisce il controllo di accesso.

Inviare un evento con dati essenziali

Il payload dovrebbe contenere solo ciò che il destinatario può conoscere. Spesso bastano identificatore e nuovo stato, lasciando al client una richiesta autorizzata per recuperare il dettaglio.

Controllerei il momento dell’emissione rispetto al commit del database. Se l’evento arriva prima che i dati siano leggibili, il browser può chiedere una risorsa ancora assente o incompleta.

Osservare coda, trasporto e browser

Nel percorso di broadcasting accodato servono worker attivi. La diagnosi deve distinguere evento non generato, job fermo, errore del provider e sottoscrizione rifiutata dal client.

La schermata deve mostrare uno stato comprensibile anche senza collegamento in tempo reale. Dopo una riconnessione, rileggerei lo stato autorevole dal backend: non presumerei che tutti gli eventi persi vengano riprodotti automaticamente.

Proverei infine due utenti con permessi diversi, una disconnessione e una ripetizione dell’evento. Il risultato utile è una UI aggiornata e coerente, che continua a rispettare gli accessi anche quando rete e code non seguono il percorso ideale.

Tag: