Centrifugo 是一个用 Golang 实现的基于 Websocket 或者 SockJS 的实时通信平台。
提供基于频道的发布/订阅(PUB/SUB)模式。
容易和现有系统集成– 不改变已有后端情况下为系统提供实时通信能力。
HTTP API 和已有后端通信 . API clients for Python, Ruby, PHP, Go, NodeJS。
浏览器可以通过SockJS或者纯粹Websocket协议和centrifugal通信。 提供 iOS和Android平台SDK。
采用Redis实现分布式部署,也支持使用Memory引擎单机简单部署。
SHA-256 HMAC连接认证和隐私保护。
多种类型的频道 – 私有, 用户限制,客户端限制。
通过名字空间灵活配置频道。
支持即时消息和历史消息。
支持用户加入/离开消息。
网络重连后可以恢复消息。
内置管理界面,提供多种计量(Metrics)。
可用于WebRTC信令服务器。
多种部署手段(docker 镜像, RPM/DEB 包, Nginx 配置, TLS certificates)。
MIT license。
基本运行框架:
Centrifugo 作为独立服务器运行,可以处理来自应用程序用户的持久连接。应用的前端和后端可以基于任何语言进行开发。你的客户端使用应用程序后端提供的令牌(Token JWT)连接到 Centrifugo,并订阅频道(Channel)。当有事件发生时,后端应用可以使用 Centrifugo 的 API 发布消息到相关 Channel。随后,消息会被投递到所有订阅本 Channel 的客户端。
项目地址:https://github.com/centrifugal/centrifugo
有疑问加站长微信联系(非本文作者)