WebSockets as a Service

The managed realtime platform behind foony.com's chat and live data, open to every developer at foony.io.

A WebSocket service keeps a persistent connection open between your servers and every connected client, so updates arrive the moment they happen instead of on the next page refresh. Foony Realtime does the unglamorous parts for you: connections, reconnects, fan-out, presence, and message history, all behind one small SDK.

1.5Mmonthly players served
500M+messages delivered per month
<100msp95 fan-out target

Try it live

Everything below runs against the production service at realtime.foony.io right now. Open this page in a second tab and watch the two mirror each other.

Presence and live cursors

Everyone reading this page appears here, straight from channel presence. Cursor positions travel as ephemeral messages, the low-latency tier that skips storage entirely.

1 here nowMove your mouse. Click to wave.

Live chat

This is the real chat for this page, the same @foony/chat room every Foony page and game room runs on. Messages arrive over one channel with history, and sends go through Foony's server so every message is moderated.

Nobody has said anything recently. Be the icebreaker.

Database Sync

This is foony.com's production pipeline: type any Foony username and their public Postgres row streams in over the site's WebSocket, then keeps updating live as they play. No polling, no API endpoint.

Looking up…

Why teams buy WebSockets instead of building them

  • Reconnects that don't lose messages. Browsers drop connections constantly. Clients resume where they left off with history replay, so a spotty connection doesn't mean missed messages.
  • Fan-out at scale. Delivering one message to a hundred thousand subscribers in under a second is a hard distributed systems problem. Here, it's the whole job.
  • Presence without bookkeeping. See who's online right now and react to enter, update, and leave events, without writing your own heartbeat and timeout logic.
  • No capacity planning. WebSocket servers are stateful, so scaling them yourself means draining, sharding, and sticky routing. A managed service makes that someone else's pager.

What you get with Foony Realtime

Channels and pub/sub

Fan out named events over WebSocket or REST to app-scoped channels (e.g. chat:lobby) with predictable delivery semantics.

Presence

Track who is online, refresh membership automatically, and react to enter, update, and leave events.

Message history

Replay recent messages from durable storage so clients recover cleanly after reconnects.

Token auth

Mint short-lived client tokens from your backend with channel-level publish, subscribe, presence, and history permissions.

Pusher compatible

Speaks the Pusher protocol, so pusher-js and Laravel Echo apps connect with a configuration change instead of a rewrite.

Database Sync

Stream Postgres changes straight to subscribed clients as live queries, no polling and no glue code.

The whole integration is a few lines:

const realtime = new Realtime({ authCallback });
const channel = realtime.channels.get('chat:lobby');

channel.on((message) => {
  showMessage(message.data);
});

await channel.publish('message', { text: 'hello' });
await channel.presence.enter({ name: 'Acorn' });

Battle-tested on real games

Foony makes extensive use of Foony Realtime for our chat and realtime database updates. Around 1.5 million players a month rely on foony.io for roughly 500 million messages, and a multiplayer game only feels right when those arrive fast, in-order, and exactly-once. Foony wouldn't be possible without the reliability and cost-effectiveness of foony.io.

8 Ball Pool online multiplayer billiards thumbnailDinoMight Bomberman style online multiplayer thumbnailChess online multiplayer board thumbnail9 Ball Pool online multiplayer billiards thumbnailConnect 4 style online multiplayer board thumbnailSudoku Online Free Puzzle Thumbnail

See it in action in any of our games, then get the same infrastructure with a dashboard and an SDK at foony.io.

Bulby, the Foony mascot

Try it on your own traffic

The free tier includes 9 million messages a month. No credit card required.

Frequently asked questions

What is WebSockets as a service?

A managed platform that owns the persistent connections between your app and its users. Instead of running your own WebSocket servers, your clients connect to the service, your backend publishes messages to channels through an SDK or REST, and the service handles delivery, reconnects, presence, and history.

How is Foony Realtime different from Pusher or Ably?

It covers the same core surface of channels, presence, history, and token auth, and it speaks the Pusher protocol, so it works as a drop-in Pusher alternative. The difference is provenance and price. It was built for foony.com, our own multiplayer game site, and the free tier includes 9 million messages a month.

Do I have to rewrite my app to switch?

Usually not. pusher-js and Laravel Echo apps can point at Foony Realtime with a configuration change. New projects use the @foony/realtime SDK for JavaScript and TypeScript, the Go SDK, or the REST API from any language.

What does it cost?

The free tier includes 9 million messages a month. Paid plans add monthly capacity, and usage above your plan is billed per million messages. Current numbers are at foony.io/pricing.

8 Ball Pool online multiplayer billiards icon