自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WebSocket是什么原理?為什么能實(shí)現(xiàn)持久化連接?

網(wǎng)絡(luò) 通信技術(shù)
為了更好的理解WebSocket,我們需要從HTTP開始說起。因?yàn)楹芏鄷r候,大家都喜歡拿WebSocket和HTTP做比較。

[[396397]]

為了更好的理解WebSocket,我們需要從HTTP開始說起。因?yàn)楹芏鄷r候,大家都喜歡拿WebSocket和HTTP做比較。

HTTP的生命周期,通過Request來界定,一個Request和一個Response,這次HTTP請求也就結(jié)束了。

在HTTP1.1中,允許發(fā)送多個Request和接收多個Response,但無論如何,Request永遠(yuǎn)等于Response。

很多網(wǎng)站為了實(shí)現(xiàn)實(shí)時的信息傳遞,都會使用輪詢技術(shù),輪詢有兩種,一種是ajax輪詢,一種是長輪詢(long poll)。

ajax輪詢的原理很簡單,讓瀏覽器每隔幾秒向服務(wù)器發(fā)送一次請求,詢問服務(wù)器是否有新的信息。

客戶端:有沒有新信息,沒有我等會再問(Request)

服務(wù)器:沒有(Response)

客戶端:有沒有,沒有我等會再問(Request)

服務(wù)器:沒有(Response)

客戶端:有沒有新信息,沒有我等會再問(Request)

服務(wù)器:有,發(fā)給你了(Response)

長輪詢與ajax輪詢相似,不同的是,當(dāng)客戶端發(fā)起請求后,如果沒有消息,就一直不返回Response,直到有新消息為止。

客戶端:有沒有新信息,沒有不要回我(Request)

……

服務(wù)器:現(xiàn)在有了,給你(Response)

以上兩種方式,都在不斷地建立HTTP連接,只有客戶端發(fā)起請求時,服務(wù)端才能回應(yīng),服務(wù)端是不能主動發(fā)起的。

而且HTTP還是一個無狀態(tài)協(xié)議,服務(wù)器不會保留與客戶交易時的任何狀態(tài),這樣做的好處是大大減輕了服務(wù)器的記憶負(fù)擔(dān),保持較快的響應(yīng)速度。

不過因此也產(chǎn)生了一些問題。客戶端要不斷地發(fā)送HTTP請求,每次都要帶上較長的頭部,真正有效的數(shù)據(jù)可能很少,浪費(fèi)很多帶寬資源,也給服務(wù)器增加了壓力。

好了,我們的主角WebSocket終于可以登場了。

相對HTTP來說,WebSocket是一種持久化的協(xié)議。它會基于HTTP協(xié)議,來完成一部分握手,之后就脫離HTTP,完全采用WebSocket了。

建立WebSocket連接的過程為:

  • 客戶端發(fā)起HTTP請求,經(jīng)過3次握手建立TCP連接,HTTP請求里存放WebSocket支持的版本號等信息。
  • 服務(wù)器收到客戶端握手請求后,回饋數(shù)據(jù)。

以上兩個步驟完成后,HTTP握手部分完成,協(xié)議升級為WebSocket,此時服務(wù)器就不再需要客戶端發(fā)起請求,再響應(yīng)請求了,可以主動推送信息給客戶端了。

客戶端:我要建立WebSocket協(xié)議。

服務(wù)器:好的,已經(jīng)升級為WebSocket協(xié)議了。

客戶端:有信息的時候,推送給我。

服務(wù)器:好的,有信息會推給你。

服務(wù)器:有信息了,給你。

服務(wù)器:又有信息了,給你。

……

只需經(jīng)過一次HTTP請求,服務(wù)器就能源源不斷地向客戶端推送信息了!

從客戶端主動詢問,變成服務(wù)器主動推送,解決了服務(wù)器上資源消耗較多的問題。

以上便是WebSocket原理以及實(shí)現(xiàn)持久化連接的過程。

 

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2024-01-11 08:53:58

2009-06-01 15:12:05

JPA是什么對象持久化ORM

2017-07-11 13:58:10

WebSocket

2018-02-07 00:00:00

數(shù)字化轉(zhuǎn)型

2019-11-27 09:03:49

JavaScriptJavaCSS

2025-03-27 04:00:00

2009-06-25 16:07:30

JPAJava EE

2018-08-02 15:24:05

RPCJava微服務(wù)

2022-07-08 08:37:23

Nacos服務(wù)注冊動態(tài)配置

2024-09-04 10:44:19

2022-02-25 14:11:48

短網(wǎng)址Java算法

2024-06-06 08:53:13

動態(tài)鏈接庫共享庫

2024-07-15 08:20:24

2022-10-08 00:00:00

websocket協(xié)議HTTP

2023-11-10 08:03:00

2023-07-21 10:55:27

2024-01-09 13:43:05

CMSCRM

2017-04-14 10:11:37

閃存備份用例

2015-07-23 09:20:19

mmap

2024-06-05 09:26:07

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號