这个项目能做什么

Centrifugo是一个开源、可扩展的实时消息服务器,旨在通过多种传输方式(包括WebSocket、HTTP流、Server-Sent Events (SSE)、GRPC和WebTransport(实验性))向在线用户传递消息。它实现了面向用户的发布/订阅模型,客户端订阅频道,后端通过简单的HTTP或GRPC API发布消息。这使得它语言无关,适用于构建聊天应用、实时评论、多人游戏、实时仪表盘、协作工具和AI流式响应。 主要特性包括: - **高效传输**:WebSocket、HTTP流、SSE、GRPC、WebTransport。 - **可扩展性**:内置支持Redis(包括Redis Cluster及兼容存储如Valkey、KeyDB、DragonflyDB)、PostgreSQL或Nats进行水平扩展。 - **简单服务器API**:用于后端通信的HTTP和GRPC端点。 - **异步消费者**:PostgreSQL和Kafka消费者,用于事务性发件箱和变更数据捕获模式。 - **灵活认证**:基于JWT或通过后端请求的代理式认证。 - **丰富订阅模型**:流(客户端/服务端)、映射、共享轮询和代理订阅流。 - **频道权限**:命名空间概念和各种权限策略。 - **消息历史和恢复**:热历史,重连时自动恢复,以及缓存恢复模式。 - **增量压缩**:基于Fossil算法减少带宽。 - **在线状态**:频道在线状态,带加入/离开通知。 - **RPC**:通过实时连接向后端发送RPC调用。 - **客户端协议**:严格有效的协议,官方SDK支持JavaScript、Dart/Flutter、Swift、Java、Python、Go和.NET(开发中)。 - **数据格式**:JSON和二进制Protobuf,优化序列化和批处理。 - **管理界面**:嵌入式Web界面,用于监控和测试。 - **可观测性**:Prometheus指标和官方Grafana仪表盘。 Centrifugo定位为Pubnub、Pusher和Ably等商业服务以及socket.io和SignalR等框架的自托管替代方案。它设计为一次设置即可长期使用,将实时传输与业务逻辑解耦。 使用Docker快速启动: ```bash docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure ``` 然后打开http://localhost:8000访问管理界面。不安全标志仅用于本地试用。 生产环境请遵循官方文档网站(centrifugal.dev)上的安装和快速入门指南。该项目积极维护,通过Telegram和Discord提供社区支持。