Real-time features need a server that holds the connections. WebSocket runs one on your computer, shows who is connected and what flows through, and has a test client so you can poke a channel without writing code. Open WebSocket in the rail. It runs on macOS and Windows.
The servers
You can run one server of each kind:
| Server | Protocol | Port | Notes |
|---|---|---|---|
| Laravel Reverb (shared) | Pusher | 8080 |
At wss://reverb.<tld>. A small Laravel app on DevCatz’s PHP 8.2 or later |
| Sockudo | Pusher | 6001 |
On the domain ws. Runs in DoCatz, see below |
| Centrifugo | Centrifugo | 8100 |
|
| Mercure | Mercure (server-sent events) | 8200 |
|
| NATS | NATS | 9222 WebSocket, 4222 TCP |
Pusher-protocol servers work with Laravel Echo and pusher-js as they are.
Centrifugo, Mercure and NATS come from their GitHub releases (macOS tarballsWindows x64 zips, SHA-256 checked); Reverb is installed with Composer on the PHP of the Runtimes page.
Sockudo publishes no Windows build (Linux only), so on Windows it runs from its official image
(sockudo/sockudo) in DoCatz’s container engine (WSL 2). Its button reads Install in DoCatz…,
with DoCatz’s logo: DevCatz pulls the image there, starts and stops it, and keeps the same ports, domain, keys and
.env lines as on a Mac. The page header says in DoCatz, More ▾ gets Open in DoCatz, and DoCatz lists the
container under DevCatz Services. Updates pull the newer image; uninstalling removes the container and the image.
No DoCatz yet? The page shows DoCatz is not installed with Download & Install DoCatz first, and with DoCatz but
no engine set up yet, DevCatz opens DoCatz and says so. Laravel Reverb speaks the same Pusher protocol and runs
natively, if you would rather skip containers.
The server page
Each server’s page has these tabs:
| Tab | What it shows |
|---|---|
| Inspector | Clients, Channels, Messages/s, and the Members of presence channels |
| Test client | Connect and subscribe like your app would, then publish |
| Connection | Host, port, keys and ready-made lines |
| Sites | The sites that use this server |
| Logs | The server’s log |
The test client speaks each protocol:
- Pusher (Reverb, Sockudo): public, private and presence channels, with the auth these need.
- Centrifugo: connects with a token.
- Mercure: subscribes with EventSource.
- NATS:
SUBandPUB.
Next to the tabs sit Admin, a More ▾ menu and Site servers — servers that sites run themselves, with Start, Stop, Restart and Test connection.
The site WebSocket tab
A site gets a WebSocket tab when DevCatz finds a real-time library in it, or Reverb:
| Language | Libraries found |
|---|---|
| Node.js | Socket.IO, ws, uWebSockets.js, NestJS / Hono / Fastify / crossws WebSockets, Laravel Echo, pusher-js, Centrifuge, NATS |
| PHP | Reverb, Ratchet, Swoole, Workerman, Mercure, phpcent |
| Python | Channels, python-socketio, Flask-SocketIO, websockets, Tornado |
| Go | gorilla, coder, gobwas, Melody, Fiber |
The tab lists the site’s Real-time libraries and has Test connection. Then:
- Laravel Reverb → Run with the site runs
reverb:startfor this site on a managed port, atwss://reverb.<site>— so each Laravel app can have its own Reverb instead of sharing one. - Choose a server… points the site at one of the DevCatz servers.
- Write to .env writes the
REVERB_*,VITE_REVERB_*or Pusher lines.
Laravel Broadcasting
Laravel sites also get a Laravel Broadcasting card: the site’s broadcast events, its channel routes, a few checks of the setup, and Send test broadcast to see an event arrive in the inspector.
Settings → WebSocket
| Setting | Default | What it does |
|---|---|---|
| Services | Every server, and whether it starts with DevCatz | |
| Allowed origins | * |
Which origins may connect |
| Test client: events kept | 200 |
How many events the test client remembers |
Installed servers also appear in the menu bar (the tray on Windows) with Start / Stop / Restart and Open in DevCatz.
Last updated 2026-11-03