Skip to main content

¿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 Artisan install:broadcasting.
El comando te pedirá que elijas el servicio de broadcasting y generará 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.
Si prefieres instalarlo manualmente, añade el paquete con Composer y luego ejecuta el comando de instalación.

Valores clave en .env

Arrancar el servidor Reverb

En producción, gestiónalo como daemon con un gestor de procesos como Supervisor.
Los eventos de broadcast se procesan a través de la cola. Debes arrancar también un worker de cola aparte del servidor Reverb.

Crear eventos de broadcast

Generar la clase del evento

En la clase generada, implementa la interfaz ShouldBroadcast.
Con solo implementar ShouldBroadcast, cuando se despacha el evento se emite automáticamente a través de la cola.

Personalizar los datos emitidos

Por defecto, todas las propiedades public 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 con broadcastAs.
Al escuchar en el frontend, antepón un . para desactivar el prefijo del namespace de la aplicación.

Tipos de canal

Para emitir a varios canales, devuelve un array.

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 en routes/channels.php, generado por install:broadcasting.
El primer argumento del callback es el usuario autenticado; los demás son los comodines del nombre del canal. Devuelve 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.
Regístrala en routes/channels.php.

Emisión del evento

Los eventos que implementan ShouldBroadcast se disparan como cualquier otro.
Para emitir solo a los demás usuarios excluyendo el emisor, usa toOthers.
Para usar toOthers, la clase del evento debe usar el trait InteractsWithSockets.

Recepción en el frontend

Configuración de Laravel Echo

Con Reverb, configura una instancia de Echo en resources/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.
El hook useEcho deja automáticamente el canal al desmontar el componente.
Antes de compilar los assets del frontend, comprueba que las variables VITE_REVERB_* de .env estén bien configuradas.

Ejemplo práctico: actualización en tiempo real del estado del pedido

1

Activar broadcasting

Arranca el servidor Reverb y el worker de cola.
2

Crear la clase del evento

Edita 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.
Última modificación el 13 de julio de 2026