这个项目能做什么
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提供社区支持。
评论
0 评分人数达到10人后显示
登录后参与讨论。