Centrifugo 是一個用 Golang 實(shí)現(xiàn)的基于 Websocket 或者 SockJS 的實(shí)時通信平臺乍迄。
基本運(yùn)行框架:
Centrifugo 的使用場景一般涉及三個部分:客戶端(前端)、應(yīng)用程序(后端)和 Centrifugo俱济。當(dāng)然吕粗,也可以只有客戶端和 Centrifugo释移〉方迹基本使用流程如下:
下載并安裝Centrifugo辽狈,推薦使用 docker 方式。
創(chuàng)建基礎(chǔ)配置文件呛牲,設(shè)置
secret
和api_key
刮萌。配置文件(config.json)可以通過命令自動創(chuàng)建:./centrifugo genconfig
在后端應(yīng)用程序中設(shè)置三個變量:
Centrifugo secret
、Centrifugo API Key
娘扩、Centrifugo API address
着茸。Centrifugo secret
和Centrifugo API Key
來自配置文件,Centrifugo API address
默認(rèn)為http://localhost:8000/api
畜侦。Centrifugo secret
和Centrifugo API Key
是<font color='red'>關(guān)鍵信息元扔,不能泄露到客戶端</font>。根據(jù)客戶端語言下載相應(yīng)的客戶端庫(支持的客戶端庫列表)旋膳∨煊铮客戶端庫中有連接到 Centrifugo 的方法。在連接時验懊,客戶端需要提供令牌(Token JWT)擅羞。令牌的生成應(yīng)該在應(yīng)用程序后端進(jìn)行,然后提供給客戶端义图,可以考慮在用戶登錄成功時生成令牌給客戶端或者提供令牌獲取服務(wù)供已登錄的客戶端調(diào)用减俏。令牌的生成需要依賴
Centrifugo secret
。 客戶端庫一般都有setToken
方法供使用碱工。客戶端連接到 Centrifugo 后娃承,即可根據(jù)需要訂閱相關(guān)的頻道(Channel)。所有的客戶端庫都提供了處理所訂閱頻道(Channel)消息的方法怕篷。
以上完成后历筝,應(yīng)用程序后端則可將實(shí)時消息發(fā)布到相應(yīng)的頻道(Channel)。消息的推送可以通過 Centrifugo HTTP API 來完成廊谓,官方針對不同的編程語言提供了一些 API 庫(API libraries)梳猪,使用這些庫可以方便的發(fā)布消息到指定的頻道(Channel)。當(dāng)然蒸痹,你也可以根據(jù)API 描述編寫自己的 API 庫春弥。發(fā)布到頻道的消息會被投遞到訂閱相應(yīng)頻道的客戶端。
為了方便在生產(chǎn)環(huán)境中安裝 Centrifugo叠荠,官方提供了 Docker 鏡像匿沛、rpm 包以及 deb 包。
詳細(xì)參考資料地址榛鼎。