長(zhǎng)輪詢,websocket,socket

長(zhǎng)輪詢是對(duì)輪詢的改進(jìn)版,客戶端發(fā)送HTTP給服務(wù)器之后,有沒(méi)有新消息,如果沒(méi)有新消息,就一直等待。當(dāng)有新消息的時(shí)候,才會(huì)返回給客戶端。在某種程度上減小了網(wǎng)絡(luò)帶寬和CPU利用率等問(wèn)題。但是這種方式還是有一種弊端:例如假設(shè)服務(wù)器端的數(shù)據(jù)更新速度很快,服務(wù)器在傳送一個(gè)數(shù)據(jù)包給客戶端后必須等待客戶端的下一個(gè)Get請(qǐng)求到來(lái),才能傳遞第二個(gè)更新的數(shù)據(jù)包給客戶端,那么這樣的話,客戶端顯示實(shí)時(shí)數(shù)據(jù)最快的時(shí)間為2×RTT(往返時(shí)間),而且如果在網(wǎng)絡(luò)擁塞的情況下,這個(gè)時(shí)間用戶是不能接受的,比如在股市的的報(bào)價(jià)上。另外,由于http數(shù)據(jù)包的頭部數(shù)據(jù)量往往很大(通常有400多個(gè)字節(jié)),但是真正被服務(wù)器需要的數(shù)據(jù)卻很少(有時(shí)只有10個(gè)字節(jié)左右),這樣的數(shù)據(jù)包在網(wǎng)絡(luò)上周期性的傳輸,難免對(duì)網(wǎng)絡(luò)帶寬是一種浪費(fèi)。

Websocket是應(yīng)用層第七層上的一個(gè)應(yīng)用層協(xié)議,它必須依賴HTTP 協(xié)議進(jìn)行一次握手,握手成功后,數(shù)據(jù)就直接從 TCP 通道傳輸,與 HTTP 無(wú)關(guān)了。

Websocket的數(shù)據(jù)傳輸是frame形式傳輸?shù)模热鐣?huì)將一條消息分為幾個(gè)frame,按照先后順序傳輸出去。這樣做會(huì)有幾個(gè)好處:

1)大數(shù)據(jù)的傳輸可以分片傳輸,不用考慮到數(shù)據(jù)大小導(dǎo)致的長(zhǎng)度標(biāo)志位不足夠的情況。

2)和http的chunk一樣,可以邊生成數(shù)據(jù)邊傳遞消息,即提高傳輸效率。

首先,Socket 其實(shí)并不是一個(gè)協(xié)議。它工作在 OSI 模型會(huì)話層(第5層),是為了方便大家直接使用更底層協(xié)議(一般是 TCP 或 UDP )而存在的一個(gè)抽象層。Socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API)。

Socket通常也稱作”套接字”,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通訊連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)雙向鏈路的一端稱為一個(gè)Socket,一個(gè)Socket由一個(gè)IP地址和一個(gè)端口號(hào)唯一確定。應(yīng)用程序通常通過(guò)”套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。

Socket在通訊過(guò)程中,服務(wù)端監(jiān)聽(tīng)某個(gè)端口是否有連接請(qǐng)求,客戶端向服務(wù)端發(fā)送連接請(qǐng)求,服務(wù)端收到連接請(qǐng)求向客戶端發(fā)出接收消息,這樣一個(gè)連接就建立起來(lái)了。客戶端和服務(wù)端也都可以相互發(fā)送消息與對(duì)方進(jìn)行通訊,直到雙方連接斷開(kāi)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分、概念的理解1、什么是Socket?Socket又稱之為“套接字”,是系統(tǒng)提供的用于網(wǎng)絡(luò)通信的方法。它的實(shí)...
    Hevin_Chen閱讀 2,633評(píng)論 0 5
  • 1.OkHttp源碼解析(一):OKHttp初階2 OkHttp源碼解析(二):OkHttp連接的"前戲"——HT...
    隔壁老李頭閱讀 21,617評(píng)論 24 176
  • 轉(zhuǎn)。。。。。。。。 SOCKET,TCP/UDP,HTTP,FTP (一)TCP/UDP,SOCKET,HTTP,...
    zeqinjie閱讀 3,388評(píng)論 1 53
  • 王宇帥是個(gè)大壞蛋 最討人厭的大壞蛋 害得小姑娘睡不著
    大眼瞪閱讀 172評(píng)論 2 0
  • 風(fēng)和日麗的傍晚,平靜的海面上,漁船在水中悠悠的飄蕩著。歸來(lái)的漁船滿載著收獲的喜悅,湛藍(lán)的天空,滿載著夕陽(yáng)的漁船,歸...
    鐘離凌羽閱讀 5,760評(píng)論 0 1

友情鏈接更多精彩內(nèi)容