IM為什麼需要心跳

2021-09-11 03:28:21 字數 682 閱讀 1755

對於客戶端而言,使用 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...