Jelly Jelly是一款基于Netty4.x開發的TCP長連接即時通訊服務器端程序;并且提供了Java客戶端API。 Github項目地址:Jelly 功能包括
賬戶:登錄、注冊、登出
好友:添加、刪除、好友在線狀態
消息:個人消息、討論組消息(在線消息和離線消息)
討論組:創建和解散討論組、添加和刪除成員
個人信息:修改個人信息、查看個人信息
Architecture 模塊介紹jelly-launcher 啟動模塊(就一個類而已)
jelly-transport 數據傳輸模塊
jelly-serialization 序列化模塊
jelly-service 服務模塊
jelly-dao 數據訪問模塊
應用層協議Jelly Protocol __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ | | | | | | | 2 1 1 1 4 Uncertainty |__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __ __|__ __ __ __ __ __ __ __ __| | | | | | | | Magic Sign Type Status Body Length Body Content |__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __ __|__ __ __ __ __ __ __ __ __| 協議頭9個字節定長 Magic // 數據包的驗證位,short類型 Sign // 消息標志,請求/響應/通知,byte類型 Type // 消息類型,登錄/發送消息等,byte類型 Status // 響應狀態,成功/失敗,byte類型 BodyLength // 協議體長度,int類型
數據交換格式:JSON(框架:Gson)
工作流程--------> Request - - - - -> Response -- -- --> Notice ---------------------------------------------------------------------------------------------------- __ __ __ __ __ __ __ __ __ __ __ __ __ __ | Server | __ __ __ __ | __ __ __ __ __ __ __ __ __ __ | __ __ __ __ | | Request | | | | | | Notice | | | Client |--------> | | BlockingQueue| ----> | ThreadPool | | -- -- --> | Client | |__ __ __ __| | |__ __ __ __ __| |__ __ __ __ __| | |__ __ __ __| | | | | | |__ __ __ __ __ __ __ __ __ __ __|__ __ __| | | | Response | <- - - - - - - - - - - - - - - - - - - - - - - - ----------------------------------------------------------------------------------------------------其它說明 1. 登錄成功后
服務器端登錄信息驗證成功后生成Long類型的Token返回給客戶端,此Token用于斷線重連的驗證信息
開啟心跳檢測,客戶端每空閑5s發送一個心跳包,服務器端每空閑6s計一次心跳失敗
username和channel維護在一個Map集合中
2. 斷線重連使用Token嘗試重連一次
3. 討論組信息為了減小內存壓力,,在Server啟動時會開啟一個定時任務,每隔五分鐘檢查一次groupMap(保存討論組信息的Map集合),最后一次活躍時刻過去超過10分鐘的討論組被從內存中remove掉;直到下一次活躍時刻才會被調入內存(活躍就是組員發消息)
客戶端API提供的都有API都是異步的,調用之后會返回一個Future,使用該Future添加相應的監聽器來得到的服務器的響應結果。
API詳細說明:JellyAPI文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66605.html
摘要:服務和服務之間的解耦和通訊可使用內置的隊列或發布訂閱實現,消息處理器接收到任務后,會將該任務交由線程池處理,處理后通過發送廣播或發給指定的。前端基于開發,建議使用瀏覽器體驗。在線體驗測試用戶,口令均為源碼地址服務端端 之前工作接觸了幾個開源的IM產品,再加上曾經用Netty實現過幾個服務,于是就有了用Netty實現一個IM的想法,于是用業余時間寫了一個IM,和喜歡Netty的程序員們分...
摘要:摘要是一個應用層協議,主要做網頁版即時通訊,是基于和實現,服務端常見的框架有等,這三個都親自踩過坑,唯有相對牛逼完善一些,客戶端主要就是了。 摘要 xmpp是一個應用層協議,主要做網頁版即時通訊,是基于RFC3920和RFC3921實現,服務端常見的框架有openfire,tigase,prosody等,這三個都親自踩過坑,唯有tigase8.0相對牛逼(完善)一些,客戶端主要就是st...
閱讀 3049·2021-11-22 15:29
閱讀 1729·2021-10-12 10:11
閱讀 1751·2021-09-04 16:45
閱讀 2229·2021-08-25 09:39
閱讀 2790·2021-08-18 10:20
閱讀 2509·2021-08-11 11:17
閱讀 447·2019-08-30 12:49
閱讀 3305·2019-08-30 12:49