Laravel has broadcasting in the framework, a WebSocket server of its own in Reverb, and Echo to listen in the browser. On Laravel Cloud, Reverb runs as a managed cluster you attach like a database. No second account, and no second set of credentials to copy.
Broadcast job · on the queue, picked up by a workerFramework
Reverb · fans out to subscribed socketsCloud runs it
Echo · listener fires in the browserFramework
BROADCAST_CONNECTION=reverb
Socket open
One event, numbered
From dispatch to the screen.
An order ships and the customer's open page updates without a refresh. Six steps, four of them the framework's own. The shaded steps are the ones Cloud runs for you.
01 · SubscribeThe browser asks to listen
Echo joins a private channel. It calls /broadcasting/auth, and a callback in routes/channels.php says yes or no.
Echo.private(`orders.${id}`)
02 · DispatchSomething happens
The application fires an event that implements ShouldBroadcast and names its channel in broadcastOn().
OrderShipped::dispatch($order)
03 · QueueA job is queued
The framework queues a broadcast job on the default queue. ShouldBroadcastNow skips the queue.
implements ShouldBroadcast
04 · SendA worker hands it over
A queue worker sends the payload to the broadcaster's HTTP API. On Cloud, the REVERB_* variables are injected for you.
BROADCAST_CONNECTION=reverb
05 · Fan outReverb delivers it
Reverb pushes the message to every socket on that channel. Across several servers it relays through Redis pub/sub; on Cloud that is the cluster's job.
private-orders.42
06 · ListenThe page updates
The Echo listener fires. In Livewire, an attribute does the same, and the component re-renders.
A WebSocket is a connection held open for as long as the page is. Something has to hold it. That is why realtime has usually meant a separate service, and why Reverb is a long-running server rather than a request handler.
On functionsNo socket to hold
A serverless function ends when its request does. On Vapor, realtime meant a separate hosted service.
Reverb on your serversA process you tune
A ReactPHP event loop. Past about 1,000 connections it wants ext-uv; open files, ports and Supervisor need raising. Forge configures the proxy for it by default.
Reverb on CloudA cluster you attach
Choose a region and a maximum of concurrent connections, split it across applications, and read connection and message metrics in the dashboard.
SinceGenerally available, 1 December 2025
After a developer preview from 31 October 2025.
Sources: Reverb docs, Running Reverb in production; Cloud WebSockets docs; Monitor 508 (developer preview, 31 October 2025), 501 (GA, 1 December 2025).
Who carries it
Two ways to run Reverb. One event class.
Laravel's broadcasting is a framework contract, and Reverb is its first-party server. Run it yourself or let Cloud run it: the choice is about who operates the sockets.
Reverb on Laravel Cloud
A managed WebSocket cluster in the same dashboard as the application. Attach it, redeploy, and the server and Vite variables Echo needs are injected.
Who runs the sockets
Laravel Cloud
Choose it when
The app is already on Cloud and you want one bill, one set of permissions and no credentials to copy between services
Watch for
Sized by maximum concurrent connections: 100 to 5,000 in the published table, messages up to 10 kb. Detaching does not stop the cluster's charges.
Your code
ShouldBroadcast events and Echo listeners, unchanged
Open source and free to run. Forge sets up the proxy; on a VPS you run reverb:start under Supervisor yourself.
Who runs the sockets
You
Choose it when
You run your own servers on Forge or a VPS and want the sockets beside the application. There is no Laravel per-connection bill; you pay for the server.
Watch for
ext-uv beyond about 1,000 connections, file and port limits, reverb:restart on every deploy, a central Redis for horizontal scaling
Each figure is the customer's own, from their published story. Redberry's campaign used Pusher as its broadcaster; the event, the queue and the Echo listener were the framework's, as they would be on Reverb.
Bank of Georgia campaign · Cloud
Redberry
150,000visitors in four hours, with no ramp-up
63,622 submissions, each lighting a pixel on an LED screen in Tbilisi
One app cluster, Pro 2 vCPU and 2 GB, scaling to two instances; managed PostgreSQL; one Redis cache
Three questions for a team with a live feature: which realtime service do you pay for separately today; how many connections are open at your busiest hour; and would you rather run the socket server, or attach one.