This is a documentation for Centrifugo v1. Current version of Centrifugo is v2 - see its documentation.
Centrifugal organization provides a set of tools to add real-time features to your web/mobile/desktop application. It brings together several repositories linked by a common purpose – give you a complete and ready to use solution when you want to add real-time events into your application.
Chats, real-time charts, notifications, various counters and even games can be built using our instruments – real-time messaging server, javascript browser client and client API libraries for your favorite language.
Centrifugo server easily integrates with your existing application – no need to change your project architecture and philosophy to get real-time events. Centrifugo server is language agnostic – its API can be used from any programming language. For some popular programming languages (see below) we provide helper libraries, but protocol is open and simple - so it's possible to create your own wrapper.
On client side users of your application communicate with real-time Centrifugo over Websocket or SockJS library protocol. SockJS fallback transports provide real-time messaging support even in old (like IE 8) or mobile browsers.
Documentation translations:
Let's see which projects Centrifugal organization has:
- centrifugo - real-time messaging server written in Go language
- centrifuge-js - Javascript client to connect to messaging server from web browser.
- centrifuge-android - Java library to communicate with Centrifugo client API over Websockets from Android devices.
- centrifuge-ios - Swift library to communicate with Centrifugo client API over Websockets from iOS devices.
- centrifuge-go - Go library to communicate with Centrifugo client API over Websockets from Go apps.
- centrifuge-java - Java library to communicate with Centrifugo client API over Websockets from Java applications.
- centrifuge-mobile - Go client and experimental bindings generated for iOS and Android using gomobile project.
- centrifuge-python - Python client for Centrifugo on top of asyncio library (work in progress).
- cent - Python tools to communicate with Centrifugo API.
- adjacent - a small wrapper over Cent to simplify real-time server integration with Django framework.
- rubycent - Ruby gem to communicate with Centrifugo server API.
- phpcent - PHP client to communicate with Centrifugo server API.
- gocent - Go client to communicate with Centrifugo server API.
- jscent - NodeJS client to communicate with Centrifugo server API.
- web - admin web interface for Centrifugo. Built on ReactJS.
We maintain actual demo of Centrifugo server instance on Heroku (password demo
).
You can use it to discover Centrifugo without installing it on your computer.
There are 3 endpoints of demo available:
- wss://centrifugo.herokuapp.com/connection/websocket - raw Websocket endpoint
- https://centrifugo.herokuapp.com/connection - SockJS endpoint
- https://centrifugo.herokuapp.com/api/ - HTTP API endpoint
So you can use our client and API libraries to communicate with this demo.
Examples can be found in repo on Github.
At moment we have the following examples:
- django – example shows how to integrate Django application with Centrifugal stack
- Tornado application – shows some general aspects of Centrifugal stack using Tornado server - token generation, private channel signing.
- NodeJS example - shows how to integrate Centrifugo with NodeJS based backend
- WebRTC chat - shows how to use Centrifugo as WebRTC signaling server to create peer-to-peer communication.
- insecure – example shows how to use Centrifugo running in insecure mode without any web application backend.
- jsfiddle – simplified chat example on jsfiddle with predefined user ID, timestamp and token which uses Centrifugo demo instance on Heroku
- https://github.com/synw/centcli - Terminal client for Centrifugo
- https://github.com/LaraComponents/centrifuge-broadcaster - Broadcast driver for Laravel framework to communicate with Centrifugo server API.
- https://github.com/synw/django-instant - Websockets for Django
{% include "SUMMARY.md" %}