Realtime

Real-time WebSocket messaging for your apps

Deploy managed Centrifugo instances with one click. Channels, presence, message history, and a publish API -- everything you need for real-time features.

Connect and subscribe in a few lines

import { Centrifuge } from 'centrifuge';
const client = new Centrifuge(
'wss://my-realtime.sh0.app/connection/websocket'
);
// Subscribe to a channel
const sub = client.newSubscription('chat:room-42');
sub.on('publication', (ctx) => {
console.log('New message:', ctx.data);
});
sub.subscribe();
client.connect();

Built for real-time at scale

Centrifugo handles the hard parts of real-time messaging so you can focus on your features.

WebSocket + SSE

Bidirectional WebSocket connections for real-time updates. Server-Sent Events fallback for environments where WebSocket is restricted.

Channels with Presence

Organize messages into channels. Track which users are online in each channel with built-in presence. Perfect for chat, collaboration, and live dashboards.

Publish API

Push messages from your backend to any channel via a simple HTTP API. No WebSocket connection needed from your server -- just POST to the publish endpoint.

Admin Dashboard

Built-in Centrifugo admin dashboard for monitoring connections, channels, and message throughput in real time.

Message History

Centrifugo stores message history per channel. Clients that reconnect automatically recover missed messages without custom logic.

Lightweight & Fast

Centrifugo is a single Go binary using approximately 128 MB of memory. Handles hundreds of thousands of concurrent connections per node.

How It Works

01

Create Realtime Instance

Click "Create Realtime Server" in the sh0 dashboard. Choose a name and configure your instance.

02

Configure Channels

Set up channel namespaces, permissions, history retention, and presence tracking from the admin panel.

03

Connect Your Frontend

Install the Centrifugo JavaScript client. Connect to your instance and subscribe to channels.

04

Publish Messages

Send messages from your backend via the HTTP publish API. All connected clients receive them instantly.

Message Flow

Backend Publish
Centrifugo
WebSocket
All Subscribers

Publish via HTTP from any backend. Centrifugo fans out to all connected clients instantly.

DIY WebSocket

  • x Build connection management from scratch
  • x Implement reconnection and message recovery
  • x Handle presence tracking manually
  • x Scale WebSocket servers horizontally
  • x Deal with proxy and firewall issues
  • x No admin dashboard or monitoring

sh0 + Centrifugo

  • Managed connections with auto-reconnect
  • Automatic message recovery on reconnect
  • Built-in presence per channel
  • Handles millions of connections per node
  • Auto-SSL, works through any proxy
  • Real-time admin dashboard included

Frequently Asked Questions

What is Centrifugo? +
Centrifugo is an open-source, scalable real-time messaging server written in Go. It handles WebSocket connections, channels, presence, and message delivery. sh0 manages Centrifugo instances for you.
How many concurrent connections can it handle? +
Centrifugo is designed for high concurrency. A single instance can handle hundreds of thousands of concurrent WebSocket connections with minimal resource usage.
Can I use it with any backend language? +
Yes. The publish API is a simple HTTP endpoint. Send a POST request from any language -- Node.js, Python, Go, Rust, PHP, or anything that can make HTTP calls.
Does it work with PostgREST and Auth? +
Yes. Use Logto JWTs to authenticate WebSocket connections. Publish messages from PostgREST triggers or your application logic.
What about message persistence? +
Centrifugo supports configurable message history per channel. Clients that disconnect and reconnect automatically recover missed messages.
Can I use Server-Sent Events instead of WebSocket? +
Yes. Centrifugo supports SSE as a transport alongside WebSocket. Useful for environments where WebSocket connections are restricted.

Add real-time to your app today

Deploy Centrifugo with one click. WebSocket messaging without the infrastructure headache.