Centrifugo — это масштабируемый сервер обмена сообщениями в реальном времени с открытым исходным кодом. Centrifugo может мгновенно доставлять сообщения онлайн-пользователям приложений, подключенным через поддерживаемые транспорты (WebSocket, потоковая передача HTTP, SSE/EventSource, GRPC, WebTransport). В Centrifugo реализована концепция подписки на каналы, поэтому это PUB/SUB-сервер, ориентированный на пользователя.
Centrifugo не зависит от языка и может использоваться для создания приложений чата, комментариев в реальном времени, многопользовательских игр, визуализации данных в реальном времени, инструментов для совместной работы и т. д. в сочетании с любым бэкэндом. Он хорошо подходит для современных архитектур и позволяет отделить бизнес-логику от транспортного уровня реального времени.
Несколько официальных клиентских SDK для разработки браузеров и мобильных устройств используют двунаправленный протокол. Кроме того, Centrifugo поддерживает однонаправленный подход для простых случаев использования без зависимости от SDK.
Основная идея Centrifugo проста — это PUB/SUB-сервер поверх современных транспортных средств реального времени:
Самое сложное — сделать эту концепцию готовой к использованию, эффективной, гибкой и доступной для различных прикладных сред. Centrifugo — это зрелое решение, которое уже помогло многим проектам добавить функции реального времени и масштабироваться для множества одновременных подключений. Centrifugo предоставляет набор функций, недоступных в других решениях с открытым исходным кодом в этой области:
Этот репозиторий размещен на packagecloud.io.
Также спасибо JetBrains за поддержку OSS (большая часть кода здесь написана на Goland):