Migrated to Go language, see https://github.com/centrifugal/centrifugo
Clone or download
Latest commit b133dc8 Dec 9, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
centrifuge 0.8.4 Oct 24, 2015
deploy decouple ping and metrics May 3, 2015
development script to create N connections to server Aug 30, 2015
docs add warning to main doc page Dec 9, 2016
test fix tests May 10, 2015
.dockerignore Add docker files Sep 10, 2014
.gitignore Makefile and travis Feb 21, 2015
.travis.yml rename travis file Feb 21, 2015
CHANGELOG.md 0.8.4 Oct 24, 2015
Dockerfile Add docker files Sep 10, 2014
MANIFEST.in add files Mar 21, 2014
Makefile do not use static code analysis in travis Feb 21, 2015
README.md Update README.md Dec 9, 2016
config.json rename structure to projects May 10, 2015
requirements.txt update tornado version Aug 28, 2015
setup.py update tornado version Aug 28, 2015



WARNING!!! Centrifuge server migrated to Go language - it's now called Centrifugo and lives in another repo. This repo is for history only!

It's not compatible with entire Centrifugal stack so you have to use certain versions of libraries.

Here is a list of libraries versions compatible with Centrifuge:

Please, see new documentation for the entire Centrifugal stack.


In a few words: clients (users of your web application/site) connect to Centrifuge from browser, after connecting clients subscribe on channels. Every message which was published into that channel will be delivered to all clients which are currently subscribed on that channel.

To connect to Centrifuge from browser pure Websockets or SockJS library can be used. So it works in both modern and old browsers (IE 7 supported). Centrifuge has javascript client with simple API.

Backend is built on top of Tornado - fast and mature asynchronous web server which can handle thousands of simultaneous connections.

Centrifuge scales using Redis PUB/SUB capabilities. Single full-featured instance of Centrifuge run by default without extra dependency on Redis.

There are tons of examples in internet about how to add real-time events on your site. But very few of them provide complete, scalable, full-featured, ready to deploy solution. Centrifuge aims to be such a solution with simplicity in mind.

Main features

  • Asynchronous backend on top of Tornado
  • SockJS and pure Websockets connection endpoints
  • Simple javascript client
  • Presence information, message history, join/leave events for channels
  • Admin web interface
  • Flexible channel settings via namespaces
  • Language agnostic - you can go with Centrifuge even if your site built in Perl, PHP, Ruby etc.
  • Easily integrates with existing web site.

To get more information:

Various packages and tools related to Centrifuge located in Centrifugal organization here on Github.


Similar projects / alternatives:

Basic usage from browser

var centrifuge = new Centrifuge({
    url: 'http://localhost:8000/connection',  // Centrifuge SockJS connection endpoint
    project: 'PROJECT_ID', // project ID from Centrifuge admin interface
    user: 'USER_ID', // your application user ID (can be empty for anonymous access)
    timestamp: '1395086390', // current UNIX timestamp (number of seconds as string)
    token: 'TOKEN', // HMAC token based on project's secret key, project ID, user ID and timestamp

centrifuge.on('connect', function() {


    var subscription = centrifuge.subscribe('django', function(message) {
        // message from channel received

    subscription.on('ready', function(){
        subscription.presence(function(message) {
            // information about who connected to channel at moment received
        subscription.history(function(message) {
            // information about last messages sent into channel received
        subscription.on('join', function(message) {
            // someone connected to channel
        subscription.on('leave', function(message) {
            // someone disconnected from channel


centrifuge.on('disconnect', function(){


For more information about javascript client API see documentation chapter


IMPORTANT! At moment tests require Redis running and clear database on every running. Be aware of this!

make test



Requirements Status Build Status