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