Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/centrifugal/centrifugo
Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably. Set up once and forever.
https://github.com/centrifugal/centrifugo
eventsource grpc http-streaming http3 messaging pubsub real-time redis scalability sockjs sse streaming websocket websockets webtransport
Last synced: 4 days ago
JSON representation
Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably. Set up once and forever.
- Host: GitHub
- URL: https://github.com/centrifugal/centrifugo
- Owner: centrifugal
- License: apache-2.0
- Created: 2015-03-31T20:26:49.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-19T09:59:53.000Z (7 months ago)
- Last Synced: 2024-05-19T18:33:54.508Z (7 months ago)
- Topics: eventsource, grpc, http-streaming, http3, messaging, pubsub, real-time, redis, scalability, sockjs, sse, streaming, websocket, websockets, webtransport
- Language: Go
- Homepage: https://centrifugal.dev
- Size: 109 MB
- Stars: 7,970
- Watchers: 199
- Forks: 574
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-go - Centrifugo - Real-time messaging (Websockets or SockJS) server in Go. (Messaging / Search and Analytic Databases)
- zero-alloc-awesome-go - Centrifugo - Real-time messaging (Websockets or SockJS) server in Go. (Messaging / Search and Analytic Databases)
- awesome-trevor - Centrifugo - scalable real-time messaging server in a language-agnostic way (Programming / Golang)
- awesome-repositories - centrifugal/centrifugo - Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably. Set up once and forever. (Go)
- go-awesome - Centrifugo - Real-time messaging server that can be used in conjunction with application backends written in any language (Open source library / Instant Messages)
- awesome-go - Centrifugo - Real-time messaging (Websockets or SockJS) server in Go. Stars:`8.5K`. (Messaging / Search and Analytic Databases)
- awesome-websockets - Centrifugo - Scalable real-time messaging in language-agnostic way. (Tools per Language / Agnostic)
- awesome-go - centrifugo - Language-agnostic real-time messaging server (Websocket and SockJS) - ★ 3104 (Messaging)
- awesome-go-extra - centrifugo - time messaging server in a language-agnostic way. Set up once and forever.|6325|501|6|2015-03-31T20:26:49Z|2022-08-25T07:40:09Z| (Messaging / Advanced Console UIs)
- awesome-go-zh - Centrifugo
- StarryDivineSky - centrifugal/centrifugo - streaming、SSE/EventSource、GRPC、SockJS、WebTransport)连接的应用程序在线用户发送消息。具有频道订阅的概念——因此它是一个面向用户的 PUB/SUB 服务器。 (网络服务 / 网络服务_其他)
- awesome-integration - Centrifugo (⭐8.4k) - An open-source, scalable real-time messaging server that allows you to build interactive applications where events are delivered to online users with minimal delay. (Projects / Messaging)
- awesome-homelab - Centrifugo - time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably. Set up once and forever. | (Apps / Tools)
README
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, 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
* [Centrifugo official documentation site](https://centrifugal.dev)
* [Installation instructions](https://centrifugal.dev/docs/getting-started/installation)
* [Getting started tutorial](https://centrifugal.dev/docs/getting-started/quickstart)
* [Design overview and idiomatic usage](https://centrifugal.dev/docs/getting-started/design)
* [Build a WebSocket chat/messenger app with Centrifugo](https://centrifugal.dev/docs/tutorial/intro) tutorial
* [Centrifugal blog](https://centrifugal.dev/blog)
* [FAQ](https://centrifugal.dev/docs/faq)## Join community
* [Telegram](https://t.me/joinchat/ABFVWBE0AhkyyhREoaboXQ)
* [Discord](https://discord.gg/tYgADKx)
* [Twitter](https://twitter.com/centrifugalabs)## 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:
* Efficient real-time transports: WebSocket, HTTP-streaming, Server-Sent Events (SSE), GRPC, WebTransport
* Built-in scalability with Redis (or Redis Cluster, or Redis-compatible storage – ex. AWS Elasticache, KeyDB, DragonflyDB, etc), or Nats.
* 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, cache recovery mode (deliver latest publication immediately upon subscription)
* Delta compression in channels based on Fossil algorithm
* 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](https://centrifugal.dev)## Backing
This repository is hosted by [packagecloud.io](https://packagecloud.io/).
Also thanks to [JetBrains](https://www.jetbrains.com/) for supporting OSS (most of the code here written in Goland):