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 Artisaninstall:broadcasting puedes instalar de golpe todas las dependencias, incluida Reverb.
--reverb para configurarlo automáticamente.
- 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
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.apps de config/reverb.php.
Orígenes permitidos (Allowed Origins)
Puedes restringir los orígenes de las solicitudes cliente enallowed_origins de config/reverb.php.
*.
Soporte multi-aplicación
Un único servidor Reverb puede atender varias aplicaciones. Añade varias entradas en el arrayapps 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.
tls en config/reverb.php.
Arrancar el servidor
Arranca el servidor con el comando Artisanreverb:start.
0.0.0.0:8080.
Puedes indicar una dirección personalizada con las opciones --host / --port.
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 comandoreverb:restart finaliza todas las conexiones de forma elegante y detiene el servidor.
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 enconfig/pulse.php.
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./etc/security/limits.conf.
Bucle de eventos (ext-uv)
Reverb usa por defectostream_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.
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:worker_rlimit_nofile y worker_connections en nginx.conf.
Gestión de procesos (Supervisor)
En producción, gestiona el proceso Reverb con Supervisor. Configuraminfds en supervisor.conf para asegurar los descriptores necesarios.
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.
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.| Evento | Descripción |
|---|---|
ChannelCreated | Cuando se crea un canal (la primera conexión se suscribe) |
ChannelRemoved | Cuando se elimina un canal (la última conexión se desuscribe) |
ConnectionPruned | Cuando el servidor desconecta una conexión antigua |
MessageReceived | Al recibir un mensaje del cliente |
MessageSent | Al enviar un mensaje al cliente |
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