Android長連接厕吉,怎么處理心跳機制

以下內(nèi)容整理自互聯(lián)網(wǎng)侣诵,僅用于個人學(xué)習(xí)
原文http://huachao1001.github.io/article.html?6sO6QBBT


1. 心跳機制

心跳機制是定時發(fā)送一個自定義的結(jié)構(gòu)體(心跳包),讓對方知道自己還活著,以確保連接的有效性的機制究西。

當(dāng)一臺智能手機連上移動網(wǎng)絡(luò)時,其實并沒有真正連接上Internet物喷,運營商分配給手機的IP其實是運營商的內(nèi)網(wǎng)IP卤材,手機終端要連接上Internet還必須通過運營商的網(wǎng)關(guān)進行IP地址的轉(zhuǎn)換,這個網(wǎng)關(guān)簡稱為NAT(NetWork Address Translation)峦失,簡單來說就是手機終端連接Internet 其實就是移動內(nèi)網(wǎng)IP扇丛,端口,外網(wǎng)IP之間相互映射尉辑。 由于大部分的移動無線網(wǎng)絡(luò)運營商為了減少網(wǎng)關(guān)NAT映射表的負荷帆精,如果一個鏈路有一段時間沒有通信時就會刪除其對應(yīng)表,造成鏈路中斷隧魄,正是這種刻意縮短空閑連接的釋放超時卓练,原本是想節(jié)省信道資源的作用,卻讓應(yīng)用不得以遠高于正常頻率發(fā)送心跳來維護推送的長連接购啄。

另外襟企,長連接比較耗電。

2. android系統(tǒng)的推送和iOS的推送有什么區(qū)別

首先我們必須知道狮含,所有的推送功能必須有一個客戶端和服務(wù)器的長連接顽悼,因為推送是由服務(wù)器主動向客戶端發(fā)送消息,如果客戶端和服務(wù)器之間不存在一個長連接那么服務(wù)器是無法來主動連接客戶端的辉川。因而推送功能都是基于長連接的基礎(chǔ)是上的表蝙。

IOS長連接是由系統(tǒng)來維護的拴测,也就是說蘋果的IOS系統(tǒng)在系統(tǒng)級別維護了一個客戶端和蘋果服務(wù)器的長鏈接乓旗,IOS上的所有應(yīng)用上的推送都是先將消息推送到蘋果的服務(wù)器然后將蘋果服務(wù)器通過這個系統(tǒng)級別的長連接推送到手機終端上,這樣的的幾個好處為:

  • 在手機終端始終只要維護一個長連接即可集索,而且由于這個長連接是系統(tǒng)級別的不會出現(xiàn)被殺死而無法推送的情況屿愚。
  • 省電,不會出現(xiàn)每個應(yīng)用都各自維護一個自己的長連接务荆。
  • 安全妆距,只有在蘋果注冊的開發(fā)者才能夠進行推送,等等函匕。

android的長連接是由每個應(yīng)用各自維護的娱据,但是google也推出了和蘋果技術(shù)架構(gòu)相似的推送框架,C2DM,云端推送功能盅惜,但是由于google的服務(wù)器不在中國境內(nèi)中剩,其他的原因你懂的忌穿。所以導(dǎo)致這個推送無法使用,android的開發(fā)者不得不自己去維護一個長鏈接结啼,于是每個應(yīng)用如果都24小時在線掠剑,那么都得各自維護一個長連接,這種電量和流量的消耗是可想而知的郊愧。雖然國內(nèi)也出現(xiàn)了各種推送平臺朴译,但是都無法達到只維護一個長連接這種消耗的級別。

3. 推送的實現(xiàn)方式

  • 客戶端不斷的查詢服務(wù)器属铁,檢索新內(nèi)容眠寿,也就是所謂的pull 或者輪詢方式
  • 客戶端和服務(wù)器之間維持一個TCP/IP長連接,服務(wù)器向客戶端push
  • 服務(wù)器有新內(nèi)容時焦蘑,發(fā)送一條類似短信的信令給客戶端澜公,客戶端收到后從服務(wù)器中下載新內(nèi)容,也就是SMS的推送方式

蘋果的推送系統(tǒng)和googleC2DM推送系統(tǒng)其實都是在系統(tǒng)級別維護一個TCP/IP長連接喇肋,都是基于第二種的方式進行推送的坟乾。第三種方式由于運營商沒有免費開放這種信令導(dǎo)致了這種推送在成本上是無法接受的,雖然這種推送的方式非常的穩(wěn)定蝶防,高效和及時甚侣。

在TCP機制里面,本身是存在有心跳包機制的间学,也就是TCP選項:SO_KEEPALIVE. 系統(tǒng)默認(rèn)是設(shè)置的2小時的心跳頻率殷费。

心跳包的機制,其實就是傳統(tǒng)的長連接低葫∠晗郏或許有的人知道消息推送的機制,消息推送也是一種長連接 嘿悬,是將數(shù)據(jù)有服務(wù)器端推送到客戶端這邊從而改變傳統(tǒng)的“拉”的請求方式实柠。下面介紹一下安卓和客戶端兩個數(shù)據(jù)請求的方式

  • push 這個也就是有服務(wù)器推送到客戶端這邊 現(xiàn)在有第三方技術(shù) 比如極光推送。
  • pull 這種方式就是客戶端向服務(wù)器發(fā)送請求數(shù)據(jù)(http請求)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末善涨,一起剝皮案震驚了整個濱河市窒盐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钢拧,老刑警劉巖蟹漓,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異源内,居然都是意外死亡葡粒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗽交,“玉大人伯铣,你說我怎么就攤上這事÷秩遥” “怎么了腔寡?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長掌唾。 經(jīng)常有香客問我放前,道長,這世上最難降的妖魔是什么糯彬? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任凭语,我火速辦了婚禮,結(jié)果婚禮上撩扒,老公的妹妹穿的比我還像新娘似扔。我一直安慰自己,他們只是感情好搓谆,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布炒辉。 她就那樣靜靜地躺著,像睡著了一般泉手。 火紅的嫁衣襯著肌膚如雪黔寇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天斩萌,我揣著相機與錄音缝裤,去河邊找鬼。 笑死颊郎,一個胖子當(dāng)著我的面吹牛憋飞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姆吭,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼榛做,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猾编?” 一聲冷哼從身側(cè)響起瘤睹,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎答倡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驴党,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瘪撇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倔既。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恕曲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渤涌,到底是詐尸還是另有隱情佩谣,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布实蓬,位于F島的核電站茸俭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏安皱。R本人自食惡果不足惜调鬓,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望酌伊。 院中可真熱鬧腾窝,春花似錦、人聲如沸居砖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奏候。三九已至唱星,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瑰抵,已是汗流浹背橱赠。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕉世,地道東北人蔼紧。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像狠轻,于是被迫代替她去往敵國和親奸例。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理向楼,服務(wù)發(fā)現(xiàn)查吊,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 互聯(lián)網(wǎng)推送服務(wù)原理:長連接+心跳機制(MQTT協(xié)議)Android推送技術(shù)研究Android實現(xiàn)推送方式解決方案a...
    合肥黑閱讀 3,024評論 0 12
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,967評論 6 13
  • 迎著清晨的第一縷陽光湖蜕,開始每天的晨讀逻卖,換好運動鞋出門散步,利用閒散的碎片時間聽兩本樊登讀書昭抒,頓時覺得一天的開始變得...
    Ashley_Z閱讀 134評論 0 0
  • 家里很溫暖 米飯我可以吃下兩碗 紅茶又多喝了幾盞 吃多了就去墻邊站站 累了就朝窗外喊喊 下午不能只是慵懶 來福自己...
    霖霖想要小馬甲閱讀 192評論 0 0