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.