À propos du projet
Centrifugo est un serveur de messagerie temps réel open-source et évolutif, conçu pour distribuer des messages aux utilisateurs en ligne via divers transports, notamment WebSocket, HTTP-streaming, Server-Sent Events (SSE), GRPC et WebTransport (expérimental). Il met en œuvre un modèle PUB/SUB côté utilisateur où les clients s'abonnent à des canaux et reçoivent les messages publiés par un backend via une simple API HTTP ou GRPC. Cela le rend agnostique au langage et adapté à la création d'applications de chat, de commentaires en direct, de jeux multijoueurs, de tableaux de bord temps réel, d'outils collaboratifs et de réponses en streaming d'IA.
Principales fonctionnalités :
- **Transports efficaces** : WebSocket, HTTP-streaming, SSE, GRPC, WebTransport.
- **Évolutivité** : prise en charge intégrée de Redis (y compris Redis Cluster et les stores compatibles comme Valkey, KeyDB, DragonflyDB), PostgreSQL ou Nats pour la mise à l'échelle horizontale.
- **API serveur simple** : points de terminaison HTTP et GRPC pour la communication avec le backend.
- **Consommateurs asynchrones** : consommateurs PostgreSQL et Kafka pour les patterns transactional outbox et CDC.
- **Authentification flexible** : authentification basée sur JWT ou de type proxy via des requêtes au backend.
- **Modèle d'abonnement riche** : flux d'abonnement stream (côté client/serveur), map, shared poll et proxy.
- **Permissions de canal** : concept de namespace et diverses stratégies de permissions.
- **Historique des messages et récupération** : historique chaud avec récupération automatique à la reconnexion, plus un mode de récupération par cache.
- **Compression delta** : basée sur l'algorithme Fossil pour réduire la bande passante.
- **Presence** : présence en ligne sur un canal avec notifications d'arrivée et de départ.
- **RPC** : envoi d'appels RPC au backend via la connexion temps réel.
- **Protocole client** : protocole strict et efficace avec des SDK officiels pour JavaScript, Dart/Flutter, Swift, Java, Python, Go et .NET (en cours).
- **Formats de données** : JSON et Protobuf binaire avec sérialisation et traitement par lots optimisés.
- **Interface d'administration** : interface web intégrée pour la surveillance et les tests.
- **Observabilité** : métriques Prometheus et tableau de bord Grafana officiel.
Centrifugo se positionne comme une alternative auto-hébergée à des services commerciaux comme Pubnub, Pusher et Ably, ainsi qu'à des frameworks comme socket.io et SignalR. Il est conçu pour être configuré une fois et utilisé indéfiniment, en découplant le transport temps réel de la logique métier.
Démarrage rapide avec Docker :
docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure
Ouvrez ensuite http://localhost:8000 pour l'interface d'administration. Les flags insecure sont réservés aux essais locaux.
Pour la production, suivez les guides d'installation et de démarrage rapide sur le site de documentation officiel (centrifugal.dev). Le projet est activement maintenu avec un support communautaire via Telegram et Discord.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.