日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何高效维持网络长连接

發布時間:2024/4/15 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何高效维持网络长连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

  • 當實現具備實時性需求時,我們一般會選擇長連接的通信方式
  • 而在實現長連接方式時,存在很多性能問題,如 長連接保活
  • 今天,我將?手把手教大家實現自適應的心跳保活機制,從而能高效維持長連接

1. 長連接 介紹

http的長連接和短連接(史上最通俗!)

2. 長連接斷開的原因

  • 從上節可知,在長連接的情況下,雙方的所有通信 都建立在1條長連接上(1次TCP連接),需要持續保持雙方連接才可使得雙方持續通信排除其他外因(網絡切換、NAT超時、人為原因),TCP長連接在雙方都不斷開連接的情況上,本質上是不會自動中斷的,即不需要心跳包來維持,驗證:

1)讓2臺電腦連上同1個Wifi(其中1臺做服務器, 另1臺做客戶端連接服務器(無設置KeepAlive);

只要電腦、路由器不斷網斷電,那么,2臺電腦的長連接是不會自動中斷的。

可是,長連接會存在斷開的情況,而 斷開原因 主要是:

  • 長連接所在進程被殺死
  • NAT超時
  • 網絡狀態發生變化
  • 其他不可抗因素(網絡狀態差、DHCP的租期等等 )

下面,我將對每種原因進行分析

原因1:進程被殺死

當進程被殺死后,長連接也會隨之斷開

原因2:NAT 超時(重點關注)

原因3:網絡狀態發生變化

當移動客戶端網絡狀態發生變化時(如移動網絡 & Wifi切換、斷開、重連),也會使長連接斷開

原因4:其他不可抗因素

如網絡狀態差、DHCP的租期到期等等,都會使得長連接發生 偶然的斷開

3. 高效維持長連接的解決方案

  • 在了解長連接斷開原因后,針對對應原因,此處給出?高效維持長連接的解決方案

  • 為此,若需有效維持長連接,則需要做到

4、解決方案1:斷線重連機制

  • 原理
    檢測網絡狀態變化 & 判斷連接的有效性
  • 具體實現
    前者請參考文章:Android:檢測網絡狀態&監聽網絡變化;后者主要存在于心跳保活機制,所以下面會在心跳保活機制中一起講解。

5、解決方案2:進程保活

整體概括如下:

6、解決方案3:?心跳保活機制簡介

  • 心跳保活機制的整體介紹如下

  • 很多人容易混淆?心跳機制 & 輪詢機制,此處給出二者區別

  • 主流心跳機制分析 & 對比

對國、內外主流的移動IM產品(WhatsApp、Line、微信)進行了心跳機制的簡單分析 & 對比,具體請看下圖

?

?

總結

以上是生活随笔為你收集整理的如何高效维持网络长连接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。