Skip to main content
Esta página se centra en la instalación y operación del propio servidor Reverb. Para la creación de eventos de broadcast y el uso de Laravel Echo, consulta Broadcasting.

¿Qué es Reverb?

Laravel Reverb es un servidor WebSocket auto-hospedado que ofrece oficialmente Laravel. Permite añadir comunicación en tiempo real rápida y escalable a tu aplicación Laravel sin depender de servicios externos. Reverb funciona sobre la infraestructura de broadcasting y se encarga de entregar eventos del servidor al navegador a través de WebSocket.

Instalación

Con el comando Artisan install:broadcasting puedes instalar de golpe todas las dependencias, incluida Reverb.
Elige Reverb durante el proceso o pasa la opción --reverb para configurarlo automáticamente.
Este comando hace lo siguiente:
  • Instala el paquete Composer (laravel/reverb)
  • Instala los paquetes NPM (laravel-echo, pusher-js)
  • Añade las variables de entorno a .env
  • Genera config/reverb.php
Si prefieres instalarlo manualmente, añade el paquete con Composer y ejecuta reverb:install.

Configuración

Credenciales de la aplicación

Configura mediante variables de entorno las credenciales que cliente y servidor usarán para establecer la conexión.
Estos valores se leen en la sección apps de config/reverb.php.

Orígenes permitidos (Allowed Origins)

Puedes restringir los orígenes de las solicitudes cliente en allowed_origins de config/reverb.php.
Para permitir todos los orígenes indica *.

Soporte multi-aplicación

Un único servidor Reverb puede atender varias aplicaciones. Añade varias entradas en el array apps de config/reverb.php.

Configuración de SSL

En producción es habitual que Nginx u otro servidor web se encargue de la terminación SSL y actúe como proxy hacia Reverb. Si quieres usar Secure WebSocket (wss://) en desarrollo local, puedes aprovechar los certificados de Laravel Herd o Valet.
Si necesitas indicar los certificados manualmente, configura la opción tls en config/reverb.php.

Arrancar el servidor

Arranca el servidor con el comando Artisan reverb:start.
Por defecto escucha en 0.0.0.0:8080. Puedes indicar una dirección personalizada con las opciones --host / --port.
También puedes configurarlo mediante variables de entorno.
REVERB_SERVER_HOST / REVERB_SERVER_PORT son la dirección en la que escucha el propio servidor. REVERB_HOST / REVERB_PORT son la dirección a la que la aplicación Laravel envía los mensajes de broadcast. En producción pueden ser distintas.

Modo debug

Por rendimiento, Reverb no imprime información de depuración por defecto. Para ver el flujo de conexiones y mensajes, usa la opción --debug.

Reinicio del servidor

Reverb es un proceso residente, así que para reflejar cambios de código necesita reiniciarse. El comando reverb:restart finaliza todas las conexiones de forma elegante y detiene el servidor.
Si usas un gestor de procesos como Supervisor, se reiniciará automáticamente tras la parada.

Monitorización

Reverb se integra con Laravel Pulse. Puedes mostrar en tiempo real en el dashboard el número de conexiones y mensajes. Primero añade los recorders de Reverb en config/pulse.php.
Después, añade las cards en la plantilla del dashboard de Pulse.
Para registrar correctamente el estado de las conexiones, ejecuta el daemon pulse:check en el servidor de Reverb. En configuraciones de escalado horizontal, ejecuta pulse:check solo en un servidor.

Operación en producción

Límite de archivos abiertos

Cada conexión WebSocket consume un descriptor de archivo. Comprueba el límite del sistema y súbelo si es necesario.
Puedes cambiar el límite en /etc/security/limits.conf.

Bucle de eventos (ext-uv)

Reverb usa por defecto stream_select de PHP, con un máximo de 1.024 archivos. Para manejar más de 1.000 conexiones concurrentes, instala ext-uv para levantar el límite.
Si ext-uv está disponible, Reverb lo usará automáticamente.

Proxy inverso con Nginx

En producción no expongas Reverb directamente: haz proxy con Nginx u otro servidor web. Ejemplo de configuración de Nginx:
Reverb recibe las conexiones WebSocket en /app y las solicitudes API en /apps. Permite el acceso a ambas URIs en la configuración del servidor web.
Para aumentar el número de conexiones concurrentes, ajusta worker_rlimit_nofile y worker_connections en nginx.conf.

Gestión de procesos (Supervisor)

En producción, gestiona el proceso Reverb con Supervisor. Configura minfds en supervisor.conf para asegurar los descriptores necesarios.
Ejemplo de configuración de Supervisor:

Escalado (Redis)

Cuando un solo servidor no soporta todas las conexiones, es posible escalar horizontalmente con la función pub/sub de Redis. Activa el escalado en .env.
Reverb usa la conexión Redis por defecto de la aplicación para intercambiar mensajes entre servidores. Arranca varios servidores Reverb y distribuye las solicitudes con un balanceador de carga.
Laravel Cloud ofrece infraestructura WebSocket totalmente gestionada para desplegar aplicaciones compatibles con Reverb sin gestionar la infraestructura.

Eventos

Reverb emite los siguientes eventos durante el ciclo de vida de las conexiones y los mensajes. Puedes recibirlos con listeners de eventos y añadir lógica propia. Todos estos eventos están en el namespace Laravel\Reverb\Events.

Próximos pasos

Broadcasting

Aprende a crear eventos de broadcast, autorizar canales y configurar Laravel Echo

Eventos y listeners

Descubre el sistema de eventos de Laravel para recibir los que emite Reverb
Última modificación el 13 de julio de 2026