純golang im即時通訊系統(支援分布式)

2021-09-04 02:08:05 字數 1597 閱讀 8191

純go實現的im即時通訊系統,各層可單獨部署,之間通過rpc通訊,支援集群,github位址 學習於goim, 總分三層,

comet(使用者連線層),可以直接部署多個節點,每個節點保證serverid 唯一,在配置檔案comet.toml

logic(業務邏輯層),無狀態,各層通過rpc通訊,容易擴充套件,支援http介面來接收訊息

job(任務推送層)通過redsi 訂閱發布功能進行推送到comet層。

以下comet 層,logic 層,job層都可以靈活擴充套件機器

分布式,可拓撲的架構

支援單個,房間推送

心跳支援(gorilla/websocket內建)

基於redis 做訊息推送

輕量級持續迭代…

安裝

go get -u github.com/terry-ye/im

golang.org 包拉不下來的情況,例

package golang.org/x/net/ipv4: unrecognized import path "golang.org/x/net/ipv4" (https fetch: get  dial tcp 216.239.37.1:443: i/o timeout)
從github 拉下來,再移動位置

git clone 

mkdir -p golang.org/x/

mv net $gopath/src/golang.org/x/

部署im

安裝comet、logic、job模組

cd $gopath/src/im/comet

go install

cd ../logic/

go install

cd ../job

go install

nohup $gopath/bin/logic -d $gopath/src/im/logic/ 2>&1 > /data/log/im/logic.log &

nohup $gopath/bin/comet -d $gopath/src/im/comet/ 2>&1 > /data/log/im/comet.log &

nohup $gopath/bin/job -d $gopath/src/im/job/ 2>&1 > /data/log/im/job.log &

im_api 是im系統中使用的介面,需要像demo那樣整體跑起來需要完整的部署

部署伺服器注意防火牆是否開放對應的埠(本地不需要,具體需要的埠在各層的配置檔案)

聊天室:

支援wss

聊天機械人

即時通訊系統

企業擁有一套理想的即時通訊系統,正如找到了一位得心應手的商務秘書。然而,縱觀當前企業即時通訊市場,同質化的即時通訊軟體比比皆是,而能夠讓企業真正根據自身需要來按需定製 人性化開發的即時通訊系統卻少之又少。傳統開發理念讓企業被動使用即時通訊。目前,大多數的軟體提供商還在用傳統的開發理念來開發企業即時通...

即時通訊系統IM

背景 即時通訊 instant messaging 是目前internet上最為流行的通訊方式,各種各樣的即時通訊軟體也層出不窮 服務提供商也提供了越來越豐富的通訊服務功能。不容置疑,internet已經成為真正的資訊高速公路。從實際工程應用角度出發,以計算機網路原理為指導,結合當前網路中的一些常用...

即時通訊系統架構

先看狀態訊息系統 connd client接入伺服器,可以支援udp,也可以支援tcp,一般建議優先選擇tcp。connd可以布置多台,client接入時,可以用簡單的dns輪詢的方式實現負載均衡。connd功能是維護連線和 訊息包。pconnd proxy connd,接入伺服器,是connd的擴...