适用于开发者的开源分布式即时通讯系统
大家平時工作中用什么通訊工具進行交流呢?微信?QQ?但是有不少單位為了防止員工摸魚,不允許員工使用上述工具,但一些能給大家用的本地通訊工具呢又不怎么好用,所以今天TJ君來和大家分享一個適用于開發者的分布式即時通訊系統,cross IM,簡稱 CIM
CIM總的來說,是一款面向開發者的即時通訊系統,它可以提供一些組件幫助開發者構建成一款屬于自己的即時通訊工具。
目前已經實現的功能有:
群聊
私聊
內置命令
聊天記錄查詢。
一鍵開啟的 AI 模式
使用 Google Protocol Buffer 高效編解碼
根據實際情況靈活的水平擴容、縮容
服務端自動剔除離線客戶端
客戶端自動重連
延時消息
在開發計劃中的功能有:
分組群聊
SDK 開發包
離線消息
協議支持消息加密
整體的系統架構如下圖所示:
其中,各個組件均采用SpringBoot構建,底層通信采用Netty構建,而存放各個客戶端的路由信息、賬號信息、在線狀態的則是Redis,最后使用了Zookeeper進行IM-server的注冊與發現。
其整體功能流程可以這樣理解:
首先客戶端向route發起登錄。登陸成功后,從Zookeeper中選擇可用的IM-server返回給客戶端,并保存登錄、路由信息到Redis。然后由 客戶端向IM-server發起長連接請求,連同后保持活躍。最后當客戶端下線時通過route清除狀態信息。
快速啟動四步驟
1、安裝 Zookeeper、Redis 并保證網絡通暢。
cd?cim mvn?-Dmaven.test.skip=true?clean?package2、部署 IM-server(cim-server)
cim-server 集群部署同理,只要保證 Zookeeper 地址相同即可。
cp /cim/cim-server/target/cim-server-1.0.0-SNAPSHOT.jar /xx/work/server0/ cd /xx/work/server0/ nohup java -jar /root/work/server0/cim-server-1.0.0-SNAPSHOT.jar --cim.server.port=9000 --app.zk.addr=zk地址 > /root/work/server0/log.file 2>&1 &3、部署路由服務器(cim-forward-route)
cim-forward-route 本身就是無狀態,可以部署多臺;使用 Nginx 代理即可。
cp?/cim/cim-server/cim-forward-route/target/cim-forward-route-1.0.0-SNAPSHOT.jar?/xx/work/route0/ cd?/xx/work/route0/ nohup?java?-jar??/root/work/route0/cim-forward-route-1.0.0-SNAPSHOT.jar?--app.zk.addr=zk地址?--spring.redis.host=redis地址?--spring.redis.port=6379??>?/root/work/route/log.file?2>&1?&4、啟動客戶端
啟動兩個客戶端就可以互相通信。
cp?/cim/cim-client/target/cim-client-1.0.0-SNAPSHOT.jar?/xx/work/route0/ cd?/xx/work/route0/ java?-jar?cim-client-1.0.0-SNAPSHOT.jar?--server.port=8084?--cim.user.id=唯一客戶端ID?--cim.user.userName=用戶名?--cim.route.url=http://路由服務器:8083/客戶端有一些常用的內置命令,例如:
:q!?退出客戶端
:olu?獲取所有在線用戶信息
:all?獲取所有命令
:q [option]?【:q 關鍵字】查詢聊天記錄
:ai?開啟 AI 模式
:qai?關閉 AI 模式
:pu?模糊匹配用戶
:info?獲取客戶端信息
:emoji [option]?查詢表情包 [option:頁碼]
:delay [msg] [delayTime]?發送延時消息
讓我們一起看下一些實際聊天交流的效果:
如果覺得不錯的小伙伴,可以來試試哦!項目地址如下:
點擊下方卡片,關注公眾號“TJ君”
回復“CIM2022”,獲取倉庫地址
關注我,每天了解一個牛x、好用、有趣的東東
另外,我們將之前發過的各種項目及工具進行了整理,收錄到了GitHub項目,歡迎各位小伙伴光臨Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU
往期推薦
Spring Boot+Vue的開源小商城項目
疫情期間,搶不到菜,怎么辦?
易用友好的云監控系統,網站監測,自定義監控,閾值告警,樣樣精
總結
以上是生活随笔為你收集整理的适用于开发者的开源分布式即时通讯系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫画 | 浏览器一个比一个“无耻”
- 下一篇: Origin2021PRO下载