• Stars
    star
    7,470
  • Rank 5,173 (Top 0.2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably. Set up once and forever.

Centrifugo is an open-source scalable real-time messaging server. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, SSE/EventSource, GRPC, SockJS, WebTransport). Centrifugo has the concept of channel subscriptions – so it's a user-facing PUB/SUB server.

Centrifugo is language-agnostic and can be used to build chat apps, live comments, multiplayer games, real-time data visualizations, collaborative tools, etc. in combination with any backend. It is well suited for modern architectures and allows decoupling the business logic from the real-time transport layer.

Several official client SDKs for browser and mobile development wrap the bidirectional protocol. In addition, Centrifugo supports a unidirectional approach for simple use cases with no SDK dependency.

Documentation

Join community

Why Centrifugo

The core idea of Centrifugo is simple – it's a PUB/SUB server on top of modern real-time transports:

The hard part is to make this concept production-ready, efficient, flexible and available from different application environments. Centrifugo is a mature solution that already helped many projects with adding real-time features and scale towards many concurrent connections. Centrifugo provides a set of features not available in other open-source solutions in the area:

  • Real-time transports: WebSocket, HTTP-streaming, Server-Sent Events (SSE), GRPC, SockJS, WebTransport
  • Built-in scalability to many machines with Redis, KeyDB, Nats, Tarantool
  • Simple HTTP and GRPC server API to communicate with Centrifugo from the app backend
  • Flexible connection authentication mechanisms: JWT and proxy-like
  • Channel subscription multiplexing over a single connection
  • Different types of subscriptions: client-side and server-side
  • Various channel permission strategies, channel namespace concept
  • Hot message history in channels, with automatic message recovery upon reconnect
  • Online channel presence information, with join/leave notifications
  • A way to send RPC calls to the backend over the real-time connection
  • Strict and effective client protocol wrapped by several official SDKs
  • JSON and binary Protobuf message transfer, with optimized serialization
  • Beautiful embedded admin web UI
  • And much more, visit Centrifugo documentation site

Backing

This repository is hosted by packagecloud.io.

Private NPM registry and Maven, RPM, DEB, PyPi and RubyGem Repository Β· packagecloud

Also thanks to JetBrains for supporting OSS (most of the code here written in Goland):

JetBrains logo

More Repositories

1

centrifuge

Real-time messaging library for Go with scalability in mind. The core of Centrifugo server.
Go
838
star
2

centrifuge-js

JavaScript client SDK to communicate with Centrifugo and Centrifuge-based server from browser, NodeJS and React Native. Supports WebSocket, HTTP-streaming over Fetch and Readable Stream API, EventSource, WebTransport and SockJS.
TypeScript
353
star
3

centrifuge-go

Go client SDK for bidirectional communication with Centrifugo and Centrifuge-based server over WebSocket
Go
207
star
4

phpcent

PHP library to communicate with Centrifugo HTTP API
PHP
144
star
5

centrifuge-dart

Dart (Flutter) client SDK for bidirectional communication with Centrifugo and Centrifuge-based server over WebSocket
Dart
89
star
6

gocent

Go library to communicate with Centrifugo HTTP API
Go
75
star
7

pycent

Python library to communicate with Centrifugo HTTP API
Python
63
star
8

centrifuge-mobile

iOS and Android clients for Centrifugo and Centrifuge library using gomobile on top of centrifuge-go
Go
56
star
9

centrifuge-java

General Java and Android client SDK for bidirectional communication with Centrifugo and Centrifuge-based server over WebSocket
Java
56
star
10

centrifuge-android

Android client to communicate with Centrifugo v1 over Websockets (not maintained anymore)
Java
48
star
11

examples

Collection of examples for Centrifugo stack https://centrifugal.dev
PHP
46
star
12

centrifuge-swift

Swift client SDK for bidirectional real-time communication with Centrifugo and Centrifuge-based server over WebSocket
Swift
43
star
13

web

Admin web interface for Centrifugo real-time messaging server
TypeScript
35
star
14

adjacent

Centrifugo v1 integration with Django framework, for Centrifugo v2 use cent Python client to integrate
Python
32
star
15

centrifuge-ios

Swift client to communicate with Centrifugo v1 from iOS over WebSocket (not maintained anymore)
Swift
28
star
16

centrifuge-python

Centrifugo real-time WebSocket SDK for Python on top of asyncio
Python
28
star
17

helm-charts

Official Centrifugo Helm chart for Kubernetes
Mustache
27
star
18

rubycent

Ruby gem to communicate with Centrifugo HTTP API
Ruby
19
star
19

documentation

Centrifugo v1 documentation
CSS
14
star
20

jscent

Node.js client to interact with Centrifugo v1 HTTP API
JavaScript
11
star
21

protocol

Centrifuge client-server protocol definitions
Go
7
star
22

rotor

Rotor is a high-performance PUB/SUB Broker and Presence Manager for Centrifuge and Centrifugo based on Tarantool Cartridge (EXPERIMENTAL)
Lua
7
star
23

centrifugal.dev

Documentation site for Centrifugo
JavaScript
7
star
24

centrifugo-pro

A home for Centrifugo PRO releases
3
star
25

tarantool-centrifuge

Base Lua module to build Centrifugo Tarantool Engine. Work in progress.
Lua
3
star
26

homebrew-centrifugo

Homebrew formula for Centrifugo
Ruby
2
star