Sobre o projeto
Centrifugo é um servidor de mensagens em tempo real de código aberto e escalável, projetado para entregar mensagens a usuários online através de diversos transportes, incluindo WebSocket, HTTP-streaming, Server-Sent Events (SSE), GRPC e WebTransport (experimental). Ele implementa um modelo PUB/SUB voltado ao usuário, no qual os clientes se inscrevem em canais e recebem mensagens publicadas por um backend através de uma API HTTP ou GRPC simples. Isso o torna agnóstico de linguagem e adequado para construir aplicativos de chat, comentários ao vivo, jogos multijogador, painéis em tempo real, ferramentas colaborativas e respostas de streaming de IA.
Os principais recursos incluem:
- **Transportes eficientes**: WebSocket, HTTP-streaming, SSE, GRPC, WebTransport.
- **Escalabilidade**: suporte integrado a Redis (incluindo Redis Cluster e armazenamentos compatíveis como Valkey, KeyDB, DragonflyDB), PostgreSQL ou Nats para escalabilidade horizontal.
- **API de servidor simples**: endpoints HTTP e GRPC para comunicação com o backend.
- **Consumidores assíncronos**: consumidores PostgreSQL e Kafka para padrões de transactional outbox e CDC.
- **Autenticação flexível**: baseada em JWT ou autenticação do tipo proxy via requisições ao backend.
- **Modelo de assinatura rico**: streams (do lado do cliente/servidor), map, shared poll e streams de assinatura via proxy.
- **Permissões de canal**: conceito de namespace e várias estratégias de permissão.
- **Histórico de mensagens e recuperação**: histórico quente com recuperação automática na reconexão, além do modo de recuperação por cache.
- **Compressão delta**: baseada no algoritmo Fossil para reduzir o uso de banda.
- **Presença**: presença online no canal com notificações de entrada/saída.
- **RPC**: envio de chamadas RPC ao backend pela conexão em tempo real.
- **Protocolo de cliente**: protocolo estrito e eficaz com SDKs oficiais para JavaScript, Dart/Flutter, Swift, Java, Python, Go e .NET (em desenvolvimento).
- **Formatos de dados**: JSON e Protobuf binário com serialização e agrupamento otimizados.
- **UI de administração**: interface web incorporada para monitoramento e testes.
- **Observabilidade**: métricas Prometheus e um painel Grafana oficial.
O Centrifugo se posiciona como uma alternativa auto-hospedada a serviços comerciais como Pubnub, Pusher e Ably, bem como a frameworks como socket.io e SignalR. Ele foi projetado para ser configurado uma vez e usado indefinidamente, desacoplando o transporte em tempo real da lógica de negócios.
Início rápido com Docker:
```bash
docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure
```
Em seguida, abra http://localhost:8000 para a UI de administração. As flags insecure são apenas para testes locais.
Para produção, siga os guias de instalação e início rápido no site oficial de documentação (centrifugal.dev). O projeto é mantido ativamente com suporte da comunidade via Telegram e Discord.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.