Built on Cloudflare Workers & Durable Objects
WebSockets without fan-out fees.
Drop-in Pusher Channels replacement built on Cloudflare. Flat broadcast pricing with no fan-out fees — or self-host the open-source edition.
pusher.ts
import Pusher from "pusher-js";
const pusher = new Pusher("YOUR_APP_KEY", {
wsHost: "wss.socketo.dev",
cluster: "socketo",
forceTLS: true,
});Works with your existing Pusher code
Keep your frontend and backend code as is. Just change your Pusher config to point to Socketo.
Before · Pusher
PUSHER_APP_ID=<YOUR_PUSHER_APP_ID>
PUSHER_APP_KEY=<YOUR_PUSHER_KEY>
PUSHER_APP_SECRET=<YOUR_PUSHER_SECRET>
PUSHER_HOST=api-<cluster>.pusher.comAfter · Socketo
PUSHER_APP_ID=your_socketo_app_key
PUSHER_APP_KEY=your_socketo_app_key
PUSHER_APP_SECRET=your_socketo_secret
PUSHER_HOST=wss.socketo.devPick how you run it
Use our cloud service, host it on your own Cloudflare account, or run it locally while building.
Socketo Cloud
Fully managed. We handle connections and scaling so you can just build.
- Runs on Cloudflare Workers
- Dashboard & live analytics
- Nothing to manage
Self-Hosted OSS
Free and open source (GPLv3). Run on your own Cloudflare account with total control.
- Public, private, and presence channels
- Multi-app support
- Your own Cloudflare account
Local CLI
Run a local server in your terminal for testing. No account needed.
- Fast local testing
- Pusher-compatible API
- No account needed
How the options above compare
Socketo Cloud vs. Self-Hosted
Same protocol, different way to run.
| Socketo Cloud | Self-Hosted | |
|---|---|---|
| Public, private, and presence channels | ||
| Multi-app support | ||
| Outbound webhooks | ||
| Runs on Cloudflare Workers | ||
| Dashboard & live analytics | — | |
| Fully managed (nothing to host) | — |
Simple pricing
Pay for concurrent connections. We never charge you extra for broadcasting to more subscribers.
Starter
1,000 concurrent connections
$10/mo
- Unlimited apps
- Unlimited channels
- Unlimited broadcast
- Client events
- Email support
Indie
Popular3,000 concurrent connections
$20/mo
- Unlimited apps
- Unlimited channels
- Unlimited broadcast
- Client events
- Email support
Growth
5,000 concurrent connections
$40/mo
- Unlimited apps
- Unlimited channels
- Unlimited broadcast
- Client events
- Email support
- Discord support
Flat rateSend to 10 or 10,000 for the same price
Every paid plan comes with 1M free broadcasts a month. After that, it's $1 per million—no matter how many people are in the channel.
$1/ million
Frequently asked questions
Can I keep using my Pusher SDKs?
Yes. Socketo supports Pusher Protocol v7. Your existing pusher-js, Laravel Echo, and backend Pusher SDK code works out of the box.
What are fan-out fees?
With Pusher, sending 1 event to 1,000 subscribers uses 1,001 messages from your quota (1 incoming message + 1,000 fan-out deliveries). With Socketo, that same event counts as just 1 broadcast, no matter how many subscribers receive it. Paid plans include 1 million broadcasts every month, and extra broadcasts are $1 per million.
How do I switch from Pusher?
In most apps, you only need to update four environment variables to point your Pusher SDKs to Socketo. Check out our migration guide for details.
Can I self-host for free?
Yes. You can deploy our open-source GPLv3 server to your own Cloudflare account for free, or run
npx @socketo/cli locally for development.