centrifugo

by centrifugal

centrifugal / centrifugo

Scalable real-time messaging server in language-agnostic way

4.6K Stars 400 Forks Last release: 21 days ago (v2.7.2) MIT License 1.2K Commits 67 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Join the chat at https://t.me/joinchat/ABFVWBE0AhkyyhREoaboXQ   Join the chat at https://discord.gg/tYgADKx

Centrifugo is a scalable real-time messaging server in language-agnostic way. Centrifugo works in conjunction with application backend written in any programming language. It runs as separate service and keeps persistent Websocket or SockJS connections from application clients (from web browsers or other environments like iOS/Android apps). When you need to deliver an event to your clients in real-time you publish it to Centrifugo API and Centrifugo then broadcasts event to all connected clients interested in this event (i.e. clients subscribed on event channel). In other words – this is a user-facing PUB/SUB server.

For more information follow to Centrifugo documentation site.

scheme

You can also find the following posts interesting: * Four years in Centrifuge – this is a story and motivation of Centrifugo * Building real-time messaging server in Go – this is a write-up about some Centrifugo internals and decisions

How to install

See installation instructions in Centrifugo documentation.

Demo

Try our demo instance on Heroku (admin password is

password
, tokenhmacsecretkey is
secret
, API key is `api
key`). Or deploy your own Centrifugo instance in one click:

Deploy

Highlights

  • Centrifugo is fast and capable to scale to millions of simultaneous connections
  • Simple integration with any application – works as separate service
  • Simple server API (HTTP or GRPC)
  • Client-side libraries for popular frontend environments
  • JSON and binary Protobuf Websocket client protocol based on strict schema
  • SockJS polyfill for web browsers without Websocket support
  • User authentication with JWT or over connection request proxy to configured HTTP endpoint
  • Proper connection management and expiration control
  • Various types of channels: private, user-limited
  • Various types of subscriptions: client-side or server-side
  • Transform RPC calls over WebSocket/SockJS to configured HTTP endpoint call
  • Presence information for channels (show all active clients in channel)
  • History information for channels (last messages published into channel)
  • Join/leave events for channels (client goes online/offline)
  • Automatic recovery of missed messages between client reconnects over configured retention period
  • Built-in administrative web panel
  • Cross platform – works on Linux, MacOS and Windows
  • Ready to deploy (Docker, RPM/DEB packages, automatic Let's Encrypt TLS certificates, Prometheus/Graphite monitoring)
  • MIT license

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.