easy-im:一款基於netty的即時通訊系統


介紹

easy-im是面向開發者的一款輕量級、開箱即用的即時通訊系統,幫助開發者快速搭建消息推送等功能。
基於easy-im,你可以快速實現以下功能:

+ 聊天軟件

+ IoT消息推送

基本用法

項目分為easy-im-client、easy-im-server、easy-im-common三個模塊。

服務端: 執行mvn package后生成easy-im-server.tar.gz,解壓后至./lib目錄執行命令:
java -jar -Dport=8888 easy-im-server-1.0-SNAPSHOT.jar,即可啟動服務端,其中port是服務端口。

客戶端: 執行mvn package后生成easy-im-client.tar.gz,解壓后至./lib目錄執行命令:
java -jar -Duserid=110 -Dusername=zhangsan -Dhost=127.0.0.1 -Dport=8888 easy-im-client-1.0-SNAPSHOT.jar。
其中userid為用戶id,username為用戶名,host為服務端ip,port為服務端端口,其中userid要保持唯一性。

用法: 客戶端啟動后,在命令行輸入命令,命令格式為 command::content ,命令以英文雙冒號為分隔符,現已支持如下命令:

+ 單聊 sendToUser::userId::msg

+ 群聊 sendToGroup::groupId::msg

+ 發起群聊 createGroup::userId1,userId2,userId3...

+ 廣播 broadcast::msg

后續計划加入更多命令,如:

+ 退出群聊 quitGroup::groupId

+ 加入群聊 joinGroup::groupId

+ 查詢所有在線用戶 getAllUsers

+ 查詢群聊中在線用戶 getGroupUsers::groupId


后邊打算將服務端做成可無限擴展的架構,使之滿足高並發的需求。具體分為以下幾個步驟:

增加路由層: 所有發送的消息由路由層轉發給響應的服務端,服務端再由長連接轉發至客戶端,以此解決發送端與接收端不在同一台服務器上,無法通訊的問題

增加存儲介質: 將所有群組關系、客戶端與服務器的對應關系、用戶信息等存儲起來,可以用redis或者MySQL,也可存儲歷史消息

增加服務治理: 服務端如果要無限擴展,必須通過服務注冊、服務發現的機制,可以通過zookeeper,或者eureka實現

有興趣共同參與的同學,請加我微信 enM2MTA1MzI2 (請用base64解碼),一起完善,共同進步。

歡迎掃碼關注公眾號:程序員順仔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM