android 長連線的心跳及推送機制

2021-06-18 12:13:31 字數 1534 閱讀 8656

在寫之前,我們首先了解一下為什麼android維護長連線需要心跳機制,首先我們知道,維護任何乙個長連線都需要心跳機制,客戶端傳送乙個心跳給

的。如果超過乙個時間的閾值,客戶端沒有收到伺服器的應答,或者伺服器沒有收到客戶端的心跳,那麼對客戶端來說則斷開與伺服器的連線重新建立乙個

連線,對伺服器來說只要斷開這個連線即可。那麼在智慧型手機上的長連線心跳和在internet上的長連線心跳有什麼不同的目的呢?原因就在於智慧型手機使用的

是移動無線網路,那麼我們在講長連線之前我們首先要了解無線流動網路的特點。

1.無線流動網路的特點:

當一台智慧型手機連上流動網路時,其實並沒有真正連線上internet,運營商分配給手機的ip其實是運營商的內網ip,手機終端要連線上internet還必須通過運營

商的閘道器進行ip位址的轉換,這個閘道器簡稱為nat(network address translation),簡單來說就是手機終端連線internet 其實就是移動內網ip,埠,外網ip之間

ggsn(gateway gprs support note 閘道器gprs支援節點)模組就實現了nat功能,由於大部分的移動無線網路運營商為了減少閘道器nat對映表的負荷,如

果乙個鏈路有一段時間沒有通訊時就會刪除其對應表,造成鏈路中斷,正是這種刻意縮短空閒連線的釋放超時,原本是想節省通道資源的作用,沒想到讓網際網路

既造成了通道資源的浪費,也造成了手機電量的快速消耗。

2.android系統的推送和ios的推送有什麼區別:

首先我們必須知道,所有的推送功能必須有乙個客戶端和伺服器的長連線,因為推送是由伺服器主動向客戶端傳送訊息,如果客戶端和伺服器之間不存在一

個長連線那麼伺服器是無法來主動連線客戶端的。因而推送功能都是基於長連線的基礎是上的。

ios長連線是由系統來維護的,也就是說蘋果的ios系統在系統級別維護了乙個客戶端和蘋果伺服器的長鏈結,ios上的所有應用上的推送都是先將訊息推送

這個長鏈結是系統級別的不會出現被殺死而無法推送的情況。2.省電,不會出現每個應用都各自維護乙個自己的長連線。3.安全,只有在蘋果註冊的開發者才能

夠進行推送,等等。

android的長連線是由每個應用各自維護的,但是google也推出了和蘋果技術架構相似的推送框架,c2dm,雲端推送功能,但是由於google的伺服器不在中

護乙個長連線,這種電量和流量的消耗是可想而知的。雖然國內也出現了各種推送平台,但是都無法達到只維護乙個長連線這種消耗的級別。

3.推送的實現方式:

一:客戶端不斷的查詢伺服器,檢索新內容,也就是所謂的pull 或者輪詢方式

二:客戶端和伺服器之間維持乙個tcp/ip長連線,伺服器向客戶端push

蘋果的推送系統和googlec2dm推送系統其實都是在系統級別維護乙個tcp/ip長連線,都是基於第二種的方式進行推送的。第三種方式由於運營商沒有免費開放

這種信令導致了這種推送在成本上是無法接受的,雖然這種推送的方式非常的穩定,高效和及時。

無線流動網路的特點:

****

Android長連線,怎麼處理心跳機制

心跳包的機制,其實就是傳統的長連線。或許有的人知道訊息推送的機制,訊息推送也是一種長連線 是將資料有伺服器端推送到客戶端這邊從而改變傳統的 拉 的請求方式。下面我來介紹一下安卓和客戶端兩個資料請求的方式 1 push 這個也就是有伺服器推送到客戶端這邊 現在有第三方技術 比如極光推送。2 pull ...

長連線(輪詢,心跳,socket)

概念 表示客戶端和伺服器端保持聯絡,客戶端向伺服器端一直獲取資料,或者是伺服器端一直向客戶端推送資料。基本的長連線方式 輪詢表示客服端利用定時器原理 setinterval 間隔時間內向伺服器請求最新資料。心跳原理跟輪詢類似,但是心跳在一段時間內沒有向到伺服器請求,就會認為客戶端狀態異常。socke...

長連線 短連線 心跳的簡單總結

通常瀏覽器訪問伺服器的時候就是短鏈結 連線 資料傳輸 關閉連線 1.client與server通過三次握手建立連線,client傳送請求訊息,server返回響應 2.雙方都可以發起close操作,不過一般都是client先發起close操作 3.短鏈結一般只會在client server之間傳遞一...