Centrifugo 是一个用 Golang 实现的基于 Websocket 或者 SockJS 的实时通信平台。
基本运行框架:
Centrifugo 的使用场景一般涉及三个部分:客户端(前端)、应用程序(后端)和 Centrifugo。当然,也可以只有客户端和 Centrifugo。基本使用流程如下:
下载并安装Centrifugo,推荐使用 docker 方式。
创建基础配置文件,设置
secret
和api_key
。配置文件(config.json)可以通过命令自动创建:./centrifugo genconfig
在后端应用程序中设置三个变量:
Centrifugo secret
、Centrifugo API Key
、Centrifugo API address
。Centrifugo secret
和Centrifugo API Key
来自配置文件,Centrifugo API address
默认为http://localhost:8000/api
。Centrifugo secret
和Centrifugo API Key
是<font color='red'>关键信息,不能泄露到客户端</font>。根据客户端语言下载相应的客户端库(支持的客户端库列表)。客户端库中有连接到 Centrifugo 的方法。在连接时,客户端需要提供令牌(Token JWT)。令牌的生成应该在应用程序后端进行,然后提供给客户端,可以考虑在用户登录成功时生成令牌给客户端或者提供令牌获取服务供已登录的客户端调用。令牌的生成需要依赖
Centrifugo secret
。 客户端库一般都有setToken
方法供使用。客户端连接到 Centrifugo 后,即可根据需要订阅相关的渠道(Channel)。所有的客户端库都提供了处理所订阅渠道(Channel)消息的方法。
以上完成后,应用程序后端则可将实时消息发布到相应的渠道(Channel)。消息的推送可以通过 Centrifugo HTTP API 来完成,官方针对不同的编程语言提供了一些 API 库(API libraries),使用这些库可以方便的发布消息到指定的渠道(Channel)。当然,你也可以根据API 描述编写自己的 API 库。发布到渠道的消息会被投递到订阅相应渠道的客户端。
为了方便在生产环境中安装 Centrifugo,官方提供了 Docker 镜像、rpm 包以及 deb 包。
有疑问加站长微信联系(非本文作者)