對於客戶端而言,使用 tcp 長連線來實現業務的最大驅動力在於:
在當前連線可用的情況下,每一次請求都只是簡單的資料傳送和接受,免去了 dns 解析,
連線建立等時間,大大加快了請求的速度,同時也有利於接受伺服器的實時訊息。
但前提是連線可用。
nat超時是影響tcp連線壽命的乙個重要因素(尤其是國內),
所以客戶端自動測算nat超時時間,來動態調整心跳間隔,是乙個重要的優化點
keepalive 並不適用於檢測雙方存活的場景,
這種場景還得依賴於應用層的心跳。應用層心跳有著更大的靈活性,
可以控制檢測時機,間隔和處理流程,甚至可以在心跳包上附帶額外資訊。
從這個角度而言,應用層的心跳的確是最佳實踐。
智慧型心跳實際上就是動態的探測到最大的nat超時時間,
然後選定合適的心跳間隔區間去傳送心跳包,同時在網路狀況發生變化的時候能夠動態的
調整心跳間隔時間;如果心跳間隔不合適,例如心跳間隔過短,
那麼可能導致頻繁的喚醒手機傳送心跳包,增加耗電,心跳間隔過長,
可能導致這條tcp連線已經無效但是無法及時的檢測到,
只能等待下乙個心跳包傳送的時候才能感知到
alarm的對齊喚醒: 6.0時間對不上有延遲
jobservice 程序保活 為不是不支援 6.0殺的程序組,
保活是怎麼做的
為什麼長連線需要心跳協議
一般長連線都會附帶著心跳保活機制,直觀的理由就是為了確保這個連線一直有效,但是以前卻沒有往深層次去想為什麼要這麼做。本文嘗試進行一下梳理。一般網際網路應用是 請求 響應 模式,即只能客戶端主動發起請求,服務端被動響應請求 因為 nat的原因,服務端無法主動找到客戶端 對於一些需要伺服器主動下發資料到...
移動 IM 開發之心跳
什麼是心跳?在使用 tcp 長連線的im 服務設計中,往往都會涉及到心跳。心跳一般是指某端 絕大多數情況下是客戶端 每隔一定時間向對端傳送自定義指令,以判斷雙方是否存活,因其按照一定間隔傳送,類似於心跳,故被稱為心跳指令。為什麼要在應用層做心跳 那麼問題就隨之而來了 為什麼需要在應用層做心跳,難道 ...
為什麼需要PKI
為什麼需要pki 隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要pki,pki...