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