Your product manager asks for live notifications. A customer wants a real-time dashboard. Your support team needs instant alerts when a critical sensor goes offline.
The feature request is simple. The implementation bill is not.
On most deployment platforms, adding real-time features means adding a third-party service. Pusher starts at $49/month and scales to $499/month. Ably charges per message and per connection. Socket.io requires a persistent server, which means leaving serverless behind entirely. Each option adds a vendor, a billing relationship, a new SDK, and a failure point between your app and your users.
This is not a technology problem. WebSockets have been a web standard since 2011. The problem is that most hosting platforms were built around the request-response model, and they never added native support for persistent connections.
That gap is closing. And when your platform handles WebSockets natively, the economics and architecture of real-time features change fundamentally.
Why Most Platforms Cannot Do WebSockets
The serverless model that powers Vercel, Netlify, and similar platforms is built on a specific assumption: a request arrives, a function executes, a response returns, and the function shuts down. This is brilliant for API endpoints and page rendering. It is structurally incompatible with WebSockets.
A WebSocket connection is persistent. The client connects, and the connection stays open. Messages flow in both directions for as long as the session lasts. That could be seconds for a quick notification. It could be hours for a collaborative editing session.
Serverless functions are not designed to stay alive. They are billed per invocation and per millisecond of compute. A function that stays open for an hour would be absurdly expensive on a per-millisecond billing model, if the platform even allowed it.
This is why Vercel's own documentation steers developers toward third-party services for real-time features. It is not a gap they plan to fill. The architecture does not support it.
So teams reach for Pusher, Ably, or self-hosted Socket.io. Each comes with trade-offs:
- Pusher: $49-499/month depending on connections. Simple API, but you are paying for a relay service that sits between your server and your client. Every message takes an extra hop.
- Ably: Per-message pricing that is hard to predict. At 10 million messages per month, costs can exceed $500. Strong reliability guarantees, but the pricing model punishes success.
- Socket.io on a VPS: No per-message costs, but you lose serverless scaling. You are back to managing servers, handling failover, and provisioning capacity.
- Supabase Realtime: Good for database change events, but limited for custom real-time logic beyond row-level subscriptions.
Each option works. None of them are native. And "not native" means more code, more latency, more cost, and more things that break at 3am.
What Native WebSocket Support Looks Like
Durable Objects, the technology that powers WebSocket support on edge platforms like Waymaker Host, take a different approach entirely.
A Durable Object is a stateful compute unit that lives at the edge. Unlike a serverless function that dies after each request, a Durable Object persists. It holds state in memory. It accepts WebSocket connections directly. And it scales by creating more instances, each responsible for its own set of connections.
Here is what that means in practice:
No relay service. The client connects directly to the Durable Object. There is no third-party sitting in the middle adding latency and cost. The WebSocket connection terminates at your code, running on infrastructure you already pay for.
Persistent state without a database round-trip. A Durable Object can hold data in memory between messages. If you are building a collaborative editor, the document state lives in the Object. If you are building a live dashboard, the current metrics live in the Object. Reads are instant because the data is already there.
Automatic scaling by connection group. Each Durable Object handles a logical group of connections. A chat room. A dashboard. A document. When you need more rooms, more Durable Objects spin up. When connections drop, Objects hibernate. You do not manage capacity.
Global edge deployment. Durable Objects run on the same 330+ location network that serves your static assets and API responses. A user in Sydney connects to a Durable Object in Sydney. A user in London connects to one in London. Latency is measured in single-digit milliseconds.
Five Use Cases That Change With Native WebSockets
Live Dashboards
A monitoring dashboard that polls an API every 5 seconds is not real-time. It is 5 seconds behind reality with 12 unnecessary API calls per minute per client. With a native WebSocket connection, the server pushes updates the instant they happen. For operations running at the edge, this is the difference between seeing a problem and seeing a problem 30 seconds after your customer already noticed.
Collaborative Editing
Google Docs proved that real-time collaboration is expected, not optional. Building it on a request-response platform requires a third-party conflict resolution service, a message broker, and careful state synchronisation. With Durable Objects, the document state lives in a single Object. Every participant connects to it. Conflicts resolve in memory. No external service required.
Real-Time Alerts
When a sensor goes offline, when a payment fails, when a deployment breaks, you need to know immediately. Not on the next polling interval. Not when you check your email. WebSocket-based alerts arrive in under 100 milliseconds. For teams building custom apps on a business platform, this means alerts that understand organisational context: who needs to know, what team they are on, what priority this event represents.
Multiplayer Features
Every product eventually wants multiplayer: shared cursors, live presence indicators, real-time commenting. These features require persistent connections with low latency. Third-party services work but add $200-500/month and another dependency. Native WebSockets make multiplayer a feature decision, not a budget decision.
IoT and Device Communication
Connected devices need persistent, bidirectional communication. A camera network checking in. A fleet of sensors reporting status. Industrial equipment streaming telemetry. The volume of connections and messages makes per-message pricing models punitive. Native WebSocket support with flat or predictable pricing changes the economics of IoT platforms entirely.
The Cost Comparison
For a mid-scale application with 5,000 concurrent WebSocket connections and 50 million messages per month:
| Approach | Estimated Monthly Cost | Latency | Maintenance |
|---|---|---|---|
| Pusher (Growth plan) | $199-499 | +10-30ms (relay hop) | Low |
| Ably (per-message) | $300-600 | +5-15ms (relay hop) | Low |
| Socket.io on VPS | $50-200 (server costs) | Variable | High (server management) |
| Native Durable Objects | Included in platform hosting | Minimal (direct connection) | Low |
The cost difference is notable but not the main point. The architectural simplification is. Every third-party service you remove is one fewer SDK to maintain, one fewer API key to rotate, one fewer vendor to evaluate for SOC 2 compliance, and one fewer thing between your code and your users.
When Third-Party Services Are Still Better
Honesty matters. Native WebSockets are not always the right choice.
If you need guaranteed message delivery with audit trails, services like Ably provide message persistence, replay, and delivery guarantees that are hard to replicate. For financial applications or regulated industries where every message must be accounted for, a purpose-built service earns its cost.
If you need complex pub/sub patterns at massive scale, dedicated message brokers like Apache Kafka or managed services like Google Pub/Sub handle millions of subscribers with sophisticated routing. Durable Objects are optimised for connection-group patterns (rooms, sessions, documents), not broadcast-to-millions patterns.
If your team already has deep expertise in Pusher or Ably, the switching cost is real. Working code that your team understands has value. Do not migrate just because a native option exists. Migrate when the cost, latency, or complexity of the third-party service becomes a constraint.
If you are on a platform that does not support Durable Objects, the question is moot for now. But it is worth asking whether your current platform's inability to handle persistent connections is a signal about its architectural direction. Platforms built on the request-response model are not evolving toward real-time. They are outsourcing it permanently.
The Architecture Decision
The deeper question is not "which WebSocket service should I use?" It is "should real-time be a platform capability or a bolt-on service?"
When real-time is a bolt-on, every feature that needs it requires a justification conversation. Is this feature worth $200/month in Pusher fees? Is this dashboard important enough to add another vendor? The answer is often no, not because the feature lacks value, but because the implementation cost creates friction.
When real-time is a platform capability, the conversation changes. Live updates become a design choice, not a procurement decision. Your serverless functions can push data to connected clients as naturally as they return JSON responses. The barrier to building real-time features drops from "evaluate vendors, negotiate contracts, integrate SDKs" to "open a WebSocket."
This is what the shift from deployment platforms to business platforms looks like in practice. A deployment platform gives you compute and leaves you to assemble capabilities from vendors. A business platform gives you the capabilities directly, so you spend your engineering time on logic, not plumbing.
What This Means for Your Next Project
If your current platform requires a third-party service for WebSockets, you have two options:
-
Accept the cost and complexity. Pusher and Ably work. They are battle-tested. If your real-time needs are modest and your budget accommodates another vendor, this is a legitimate choice.
-
Choose a platform with native support. If you are building features that need persistent connections, if your application serves users globally, or if you want real-time to be a natural part of your architecture rather than a special case, look for native WebSocket support before you need it. Migrating a real-time service after launch is significantly harder than migrating static hosting.
The web standard is 15 years old. Your hosting platform should support it without requiring a separate vendor, a separate bill, and a separate point of failure.
Real-time is not a premium feature. It is an expectation. Build on a platform that treats it that way.
Ready to build real-time features without third-party dependencies? WaymakerOS Host provides native WebSocket support through Durable Objects, included in your platform hosting. Explore Host or see how it compares to traditional deployment platforms.
Related reading: Understand the difference between deployment platforms and business platforms, explore why edge locations matter for global apps, or see the full Vercel vs Waymaker Host comparison.
About the Author

Waymaker Editorial
Stuart Leo founded Waymaker to solve a problem he kept seeing: businesses losing critical knowledge as they grow. He wrote Resolute to help leaders navigate change, lead with purpose, and build indestructible organizations. When he's not building software, he's enjoying the sand, surf, and open spaces of Australia.