Integrates with everything
Centrifugo is a self-hosted service which can handle connections over a variety of real-time transports and provides a simple publish API. Centrifugo integrates well with any application – no need to change an existing application architecture to introduce real-time features. Just let Centrifugo deal with persistent connections.
Centrifugo is built in Go language with some smart optimizations inside. It has good performance – see a description of a test stand with one million WebSocket connections and 30 million delivered messages per minute with hardware comparable to one modern server machine.
Many built-in features can help to build an attractive real-time application in a limited time. Centrifugo provides different types of subscriptions, hot channel history, instant presence, RPC calls. There is also the possibility to proxy connection events to the application backend over HTTP or GRPC and more.
Built-in Redis, KeyDB, Tarantool engines, or Nats broker make it possible to scale connections over different machines. With consistent sharding of Redis, KeyDB, and Tarantool it's possible to handle millions of active connections with reasonable hardware requirements.
Used in production
Started almost 10 years back then Centrifugo (and Centrifuge library for Go it's built on top of) is a mature server successfully used in production by many companies around the world: Mail.ru, Badoo, ManyChat, Grafana, and others.
Even more with Centrifugo PRO
Centrifugo PRO provides even more unique features: real-time connection analytics with ClickHouse, real-time user and channel tracing, token bucket operation throttling, user active status support, faster API, faster proxy performance, and more.
What is real-time messaging?
Real-time messaging can help building interactive applications where events can be delivered to users almost immediately after being acknowledged by application backend by pushing data into persistent connection – thus achieving minimal delivery latency.
Chats, live comments, multiplayer games, streaming metrics can be built on top of a real-time messaging system.
Centrifugo handles persistent connections from clients over bidirectional WebSocket, SockJS, and unidirectional SSE (EventSource), HTTP-streaming, GRPC transports and provides API to publish messages to online clients in real-time.
Looking for a cool demo?
Here is a real-time telemetry streamed from Assetto Corsa racing simulator towards Grafana dashboard with a help of our WebSocket technologies.
This demonstrates that you can stream 60Hz data towards client connections and thus provide an instant visual feedback about system state.
Various types of interactive real-time applications can be quickly built using Centrifugo and a set of client connector libraries (for both web and mobile experience). With unidirectional transports you can avoid dependency to Centrifugo connectors and just use native browser APIs or GRPC generated code.