Centrifugo(二)基本使用
Centrifugo 是一个用 Golang 实现的基于 Websocket 或者 SockJS 的实时通信平台。
基本运行框架:
Centrifugo 的使用场景一般涉及三个部分:客户端(前端)、应用程序(后端)和 Centrifugo。当然,也可以只有客户端和 Centrifugo。基本使用流程如下:
-
下载并安装
下载并安装Centrifugo,推荐使用 docker 方式。安装教程 -
配置运行
创建基础配置文件,设置token_hmac_secret_key
(ortoken_rsa_public_key
) 和api_key
,然后运行Centrifugo。配置文件(config.json)可以通过命令自动创建:./centrifugo genconfig
-
关键配置项
在后端应用程序配置文件中设置三个变量:Centrifugo secret
、Centrifugo API Key
以及Centrifugo API address
。Centrifugo API address
默认为http://localhost:8000/api
。Centrifugo secret
和Centrifugo API Key
是关键信息,不能泄露到客户端。 -
连接到 Centrifugo
根据客户端语言下载相应的客户端库(支持的客户端库列表)。客户端库中有连接到 Centrifugo 的方法。在连接时,客户端需要提供令牌(Token JWT)。令牌的生成应该在应用程序后端进行,然后提供给客户端,可以考虑在页面模板上下文中传递令牌给客户端或者提供令牌获取服务供已登录的客户端调用。令牌的生成需要依赖Centrifugo secret
。 客户端库一般都有setToken
方法供使用。注意:对于 RSA 令牌,需要使用私钥生成 JWT。(JWT生成方法)
Centrifugo v2.3.0 之后,可以不使用 JWT 进行连接认证,参见 proxying to backend -
频道订阅
客户端连接到 Centrifugo 后,即可根据需要订阅相关的频道(Channel)。所有的客户端库都提供了处理所订阅频道(Channel)消息的方法。 -
消息推送
以上完成后,当用户打开应用程序的相关页面时,客户端会成功连接到 Centrifugo 并订阅一个或多个频道。如果你想向订阅特定频道的用户发送实时消息,例如:有人发布了新评论、部分商品打折促销、某个业务按钮被按下等,可以通过 Centrifugo HTTP API 来完成,官方针对不同的编程语言提供了一些 API 库(API libraries),使用这些库可以方便的发布消息到指定的频道(Channel)。当然,你也可以根据API 描述编写自己的 API 库。Centrifugo 也支持 GRPC API。发布到频道的消息会被投递到订阅相应频道的客户端。 -
生产环境安装包
为了方便在生产环境中安装 Centrifugo,官方提供了 Docker 镜像、rpm 包以及 deb 包。 -
监控
不用忘记对 Centrifugo 设置进行监控。参考资料