成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于Netty實(shí)現(xiàn)的即時(shí)通訊

edagarli / 3757人閱讀

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

相關(guān)文章

  • Java+Netty、Vue+Element-UI實(shí)現(xiàn)即時(shí)通信應(yīng)用 leo-im

    摘要:服務(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的程序員們分...

    zhaofeihao 評(píng)論0 收藏0
  • 即時(shí)通訊之服務(wù)端篇Tigase.

    摘要:摘要是一個(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...

    msup 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<