Centrifugo

Centrifugo

centrifugal.dev

1

About this website

Centrifugo is a scalable real-time messaging server in a language-agnostic way, designed to handle millions of concurrent connections and deliver messages with minimal latency. Written in Go and developed by Centrifugal Labs (led by Alexandr Emelin), Centrifugo has over 8,600 stars as of 2026 and serves as a self-hosted alternative to managed real-time services like Pusher, Ably, and PubNub. Centrifugo acts as a separate real-time broker that sits between application backend and frontend clients, receiving messages from the backend via HTTP or gRPC API and pushing them to connected clients over WebSocket, SSE (Server-Sent Events), HTTP-streaming, or WebTransport. Key features include: multi-transport support (WebSocket, SSE, HTTP-streaming, and WebTransport for QUIC-based connections), publish/subscribe model with channels (clients subscribe to channels and receive messages published to those channels), channel namespaces (organizing channels into logical groups with per-namespace permissions), JWT-based authentication with ed25519, HMAC, or RSA signatures, presence (tracking online users in a channel with join/leave events), history (storing recent messages for late joiners with configurable retention), private channels (requiring backend permission for subscription), server-to-client and client-to-server messaging, user limit and connection limit per channel, message proxies and hooks (calling backend webhooks on events like connect, publish, subscribe), sharding and clustering (horizontal scaling across multiple nodes using Redis Pub/Sub or Redis Streams for inter-node communication), Redis and KeyDB support for scaling, message at-most-once delivery, message encoding (JSON, msgpack, protobuf), Prometheus metrics, granular permissions (read, write, presence, history, join, leave per namespace), and rate limiting.

Tags & Categories

Categories

Tags

Statistics

1
Views
0
Clicks
0
Like
0
Dislike

Comments

Log In to post a comment

No comments yet. Be the first!