centrifugo简要介绍

592 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

centrifugo是与语言无关的可扩展实时消息服务器。centrifugo与任何编程语言编写的应用程序后端一起工作。 作为一个独立的服务运行,并通过几种受支持的传输类型(WebSocket, SockJS,EventSource, GRPC, HTTP-streaming)与应用程序客户端建立持久连接。 当需要向你的客户端实时交付一个事件时,将消息发布到centrifugo服务器API,然后centrifugo将事件广播给所有对这个事件感兴趣的连接客户端(客户端订阅了事件通道)。 换句话说,centrifugo是一个面向用户的发布/订阅服务器。

centrifugo包含以下特性:

  • centrifugo能够拓展并维持数百万连接
  • 与任何应用程序的简单集成-作为单独的服务工作
  • 简单服务器API (HTTP或GRPC)
  • 丰富的客户端库
  • 基于JSON和二进制的基于严格模式的Protobuf Websocket客户端协议
  • 使用JWT或通过连接请求代理对配置的HTTP端点进行用户身份验证
  • 正确的连接管理和超时控制
  • 各种类型的通道:私有的,用户限制的
  • 各种类型的订阅:客户端或服务器端
  • 通过WebSocket/SockJS转换RPC调用
  • 通道的状态信息(显示通道中的所有活动客户端)
  • 通道的历史信息(发布到通道的最后消息)
  • 通道加入/离开事件(客户端上线/下线)
  • 自动恢复客户端重连期间,错过的消息
  • 内置网页管理面板

安装

查看centrifugo的版本

./centrifugo version

centrifugo需要一个带有几个密钥的配置文件。 使用genconfig命令,会生成一个最小的配置文件

./centrifugo genconfig

使用配置文件可以启动centrifugo

./centrifugo --config=config.json

使用

首先需要安装centrifugo。安装了centrifugo之后,可以用下面的命令生成所需的配置文件:

./centrifugo genconfig

该命令将生成配置Json文件,内容如下:

{
  "token_hmac_secret_key": "46b38493-147e-4e3f-86e0-dc5ec54f5133",
  "admin_password": "ad0dff75-3131-4a02-8d64-9279b4f1c57b",
  "admin_secret": "583bc4b7-0fa5-4c4a-8566-16d3ce4ad401",
  "api_key": "aaaf202f-b5f8-4b34-bf88-f6c03a1ecda6",
  "allowed_origins": []
}

添加"admin": true选项到JSON配置文件,可以开启admin web panel,访问8000端口,输入设置的admin_password,登录该服务。

图片.png

在admin面板中,可以发布订阅channel以及其他功能。