¿Qué es broadcasting?
Con WebSocket puedes enviar datos en tiempo real del servidor al cliente. El broadcasting de Laravel es el mecanismo para hacer llegar eventos del lado del servidor al JavaScript del frontend mediante WebSocket. Por ejemplo, cuando cambia el estado de un pedido, la actualización se muestra al instante en el navegador sin recargar la página. La gran ventaja del broadcasting de Laravel es que compartes tal cual el nombre del evento y sus datos entre servidor y cliente.El broadcasting se construye sobre el sistema de eventos de Laravel.
Se recomienda entender primero eventos y listeners.
Configuración
En una aplicación nueva el broadcasting está deshabilitado por defecto. Actívalo con el comando Artisaninstall:broadcasting.
config/broadcasting.php y routes/channels.php.
Laravel Reverb
Desde Laravel 11 se recomienda usar Laravel Reverb, el servidor WebSocket oficial. Reverb es auto-hospedado y permite tiempo real sin depender de servicios externos.Instalación
Con la opción--reverb, install:broadcasting instala los paquetes de Composer y NPM que necesita Reverb y configura .env de una sola vez.
Valores clave en .env
Arrancar el servidor Reverb
Crear eventos de broadcast
Generar la clase del evento
ShouldBroadcast.
ShouldBroadcast, cuando se despacha el evento se emite automáticamente a través de la cola.
Personalizar los datos emitidos
Por defecto, todas las propiedadespublic de la clase se incluyen en el payload.
Para limitar los datos, define broadcastWith.
Personalizar el nombre del evento
Por defecto se usa el nombre de la clase. Cámbialo conbroadcastAs.
. para desactivar el prefijo del namespace de la aplicación.
Tipos de canal
Autorización de canales
Los canales Private y Presence se verifican en el servidor antes de que el cliente pueda suscribirse.routes/channels.php
Define los callbacks de autorización enroutes/channels.php, generado por install:broadcasting.
true o un valor truthy para autorizar, o false para denegar.
También se puede usar route model binding.
Con el nombre
orders.{order} se recibe una instancia del modelo Order.Autorización mediante clases de canal
Cuando hay muchos canales puedes organizarlos con clases dedicadas.routes/channels.php.
Emisión del evento
Los eventos que implementanShouldBroadcast se disparan como cualquier otro.
toOthers.
Recepción en el frontend
Configuración de Laravel Echo
Con Reverb, configura una instancia de Echo enresources/js/bootstrap.js.
Escuchar eventos
Uso de hooks para React / Vue
Si usas starter kits de React o Vue, los hooks dedicados simplifican el código.useEcho deja automáticamente el canal al desmontar el componente.
Ejemplo práctico: actualización en tiempo real del estado del pedido
1
Activar broadcasting
2
Crear la clase del evento
app/Events/OrderShipmentStatusUpdated.php.3
Definir la autorización del canal
Añade la lógica en
routes/channels.php.4
Disparar el evento
Dispáralo en el controlador o job que actualiza el estado del pedido.
5
Escuchar en el frontend
Escucha con script inline en Blade o desde un componente React/Vue.
Próximos pasos
Laravel Reverb
Consulta los detalles de configuración, operación en producción y escalado del servidor Reverb.
Colas y jobs
El broadcasting se procesa a través de la cola. Revisa la configuración y operación de las colas.
Eventos y listeners
Aprende los detalles del sistema de eventos de Laravel, la base del broadcasting.