Broadcasting
El broadcasting permite compartir eventos del lado del servidor con el frontend en tiempo real usando WebSockets. Es esencial para funcionalidades como chats, notificaciones en tiempo real y actualizaciones en vivo.
Configuracion
Laravel soporta Pusher, Ably y Laravel Reverb (solucion oficial open-source) como drivers de broadcasting.
// .env
BROADCAST_CONNECTION=reverb
Crear un evento broadcasteable
class MessageSent implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;
public function __construct(
public Message $message
) {}
public function broadcastOn(): array
{
return [
new PrivateChannel('chat.' . $this->message->room_id),
];
}
public function broadcastWith(): array
{
return [
'id' => $this->message->id,
'body' => $this->message->body,
'user' => $this->message->user->name,
'created_at' => $this->message->created_at->toISOString(),
];
}
}
Escuchar en el frontend
Echo.private('chat.' + roomId)
.listen('MessageSent', (event) => {
messages.push(event);
});
Laravel Echo es la libreria JavaScript oficial que facilita la suscripcion a canales y la escucha de eventos. Combinado con Laravel Reverb, ofrece una solucion completa y autoalojada para WebSockets.