長連線和短連線
大多數人都知道HTTP1.0不支援長連線,知道HTTP1.1支援長連線。這是業界的一個常識。然而這樣的描述導致了一些不做網路底層開發的開發者都下意識的認為HTTP1.1是一個可以建立長連線的的協議。(其實TCP協議才是)
“HTTP是一種應用層的網路協議”,長連線是存在於網路層的一種連線狀態,而實現它則需要在傳輸層進行開發,因為它是基於對真實資料的收發,需要在底層進行管控。那麼作為應用層的HTTP協議,如何能實現“長連線呢“?
HTTP作為應用層協議,其實它的生命週期在伺服器返回結果時就已經結束了,而所謂的支援長連線,其實是基於'Keep-Alive'請求頭所約定,從而向下進行長連線發起的一種機制。該長連線依然是基於TCP的。因此:*所謂HTTP1.1及以上支援長連線,並不是HTTP1.1可以建立長連線,而是它支援以請求頭的方式進行長連線發起(並且要求客戶端與服務端都要具備 ‘Keep-Alive: true’ ,意思就是客戶端與服務端都要支援長連線)。
- 短連線所謂短連線,及連線只保持在資料傳輸過程,請求發起,連線建立,資料返回,連線關閉。它適用於一些實時資料請求,配合輪詢來進行新舊資料的更替。
- 長連線長連線便是在連線發起後,在請求關閉連線前客戶端與服務端都保持連線,實質是保持這個通訊管道,之後便可以對其進行復用。它適用於涉及訊息推送,請求頻繁的場景(直播,流媒體)。連線建立後,在該連線下的所有請求都可以重用這個長連線管道,避免了頻繁了連線請求,提升了效率。
容易混淆的長短連線長短輪詢
所謂輪詢,即是在一個迴圈週期內不斷髮起請求來得到資料的機制。只要有請求的的地方,都可以實現輪詢,譬如各種事件驅動模型。它的長短是在於某次請求的返回週期。 - 短輪詢短輪詢指的是在迴圈週期內,不斷髮起請求,每一次請求都立即返回結果,根據新舊資料對比決定是否使用這個結果。
- 長輪詢而長輪詢及是在請求的過程中,若是伺服器端資料並沒有更新,那麼則將這個連線掛起,直到伺服器推送新的資料,再返回,然後再進入迴圈週期。
由上可以看到,長短輪詢的理想實現都應當基於長連線,否則若是迴圈週期太短,那麼伺服器的荷載會相當重;當然,即便是在長連線下,訪問人數過多,長短輪詢都有可能造成伺服器的瞬時訪問量龐大,這就需要一些相應的優化實踐了。
相關文章
- http的長連線和短連線HTTP
- 長連線和短連線的使用
- JAVA之長連線、短連線和心跳包Java
- 12、Swoole 中 TCP、UDP 和長連線、短連線TCPUDP
- 菜鳥學網路之 —— 長連線和短連線
- 一文讀透HTTP的長連線和短連線HTTP
- HTTP長連線、短連線究竟是什麼?HTTP
- 輪詢、長輪詢、短連線、長連線區別對比
- Mysql關於長連線短連線優劣比較MySql
- Socket程式設計-長連線與短連線,心跳(keep-alive)程式設計Keep-Alive
- Socket連線和Http連線HTTP
- sql 內連線和外連線SQL
- HTTP長連線HTTP
- PDO 長連線
- 連線池和連線數詳解
- 內連線、左連線、右連線
- 聊聊 TCP 長連線和心跳那些事TCP
- Luat例項教程:tcp短連線TCP
- scrapy軟連線失效和pip軟連線失效
- HTTP非持續連線和持續連線HTTP
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- Websocket 突破最大長連線Web
- SQL Server如何判斷哪些會話/連線是長連線?SQLServer會話
- 1.6.3.3. 本地連線和安全的遠端連線
- LAN連線和WAN連線有什麼區別?
- 長連線的心跳及重連設計
- [場景設計]短連線服務
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- mysql INNER JOIN、LEFT JOIN、RIGHT JOIN;內連線(等值連線)、左連線、右連線MySql
- VNC連線,VNC如何連線WindowsVNCWindows
- TCP 三次握手原理以及半連線和全連線TCP
- Http持久連線與HttpClient連線池HTTPclient
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- 阿里雲伺服器的MySQL連線和vscode遠端連線阿里伺服器MySqlVSCode
- 長連線的心跳保持設計
- 新浪短連結生成器 最新新浪短網址短連結線上生成器推薦
- 關於面向連線與面向無連線
- 軟連線、硬連結 和 i節點(inode)