HTML5實(shí)現(xiàn)WebSocket協(xié)議原理淺析

WebSocket協(xié)議的目的是為了工作于現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施。作為這一設(shè)計(jì)原則的一部分,WebSocket連接的協(xié)議規(guī)范定義了一個(gè)HTTP連接作為其開(kāi)始生命周期,進(jìn)而保證其與pre-WebSocket世界的完全向后兼容。通常來(lái)說(shuō)從HTTP協(xié)議切換WebSocket稱(chēng)為WebSocket握手。
瀏覽器發(fā)送一個(gè)請(qǐng)求到服務(wù)器,這表明它想開(kāi)關(guān)從HTTP WebSocket協(xié)議??蛻舳送ㄟ^(guò)升級(jí)標(biāo)題表達(dá)的愿望,代碼如下所示:
Origin: http://websocket.org
Cookie: __utma=99as
Connection: Upgrade
Host: echo.websocket.org
Sec-WebSocket-Key: uRovscZjNol/umbTt5uKmw==
Upgrade: websocket
Sec-WebSocket-Version: 13
如果服務(wù)器理解WebSocket協(xié)議,它通過(guò)升級(jí)頭同意協(xié)議切換。
Date: Fri, 10 Feb 2012 17:38:18 GMT
Connection: Upgrade Server: Kaazing Gateway
Upgrade: WebSocket
Access-Control-Allow-Origin: http://websocket.org
Access-Control-Allow-Credentials: true
Sec-WebSocket-Accept: rLHCkw/SKsO9GAH/ZSFhBATDKrU=
Access-Control-Allow-Headers: content-type
此時(shí)HTTP連接分解并取代了WebSocket連接在同一底層TCP / IP連接。WebSocket連接使用HTTP(80)和HTTPS端口一樣(443),默認(rèn)情況下。
連接建立后,WebSocket數(shù)據(jù)幀可以發(fā)送客戶機(jī)和服務(wù)器之間來(lái)回在全雙工模式下。兩種文本和二進(jìn)制幀可以在兩個(gè)方向同時(shí)發(fā)送。只有兩個(gè)字節(jié)數(shù)據(jù)最小陷害。對(duì)于文本幀,每一幀始于0 x00字節(jié),以0 xff字節(jié)結(jié)束,包含utf - 8數(shù)據(jù)。WebSocket文本框架使用一個(gè)終結(jié)者,而二進(jìn)制幀使用前綴長(zhǎng)度。
相關(guān)文章
HTML5+WebSocket實(shí)現(xiàn)多文件同時(shí)上傳的實(shí)例
本篇文章主要介紹了HTML5-WebSocket實(shí)現(xiàn)多文件同時(shí)上傳的實(shí)例,HTML5結(jié)合Websocket進(jìn)行文件的傳輸就變得更加方便和靈活,有興趣的可以了解一下。2016-12-29HTML5-WebSocket實(shí)現(xiàn)聊天室示例
本篇文章主要介紹了HTML5-WebSocket實(shí)現(xiàn)聊天室示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-15- 這篇文章主要介紹了淺析HTML5的WebSocket與服務(wù)器推送事件,WebSocket API最大的特點(diǎn)就是讓服務(wù)器和客戶端能在給定的時(shí)間范圍內(nèi)的任意時(shí)刻,相互推送信息,需要的朋友可以參2016-02-19
html5的websockets全雙工通信詳解學(xué)習(xí)示例
本文主要研究HTML5 WebSockets的使用方法,它是HTML5中最強(qiáng)大的通信功能,定義了一個(gè)全雙工的通信信道,只需Web上的一個(gè)Socket即可進(jìn)行通信,能減少不必要的網(wǎng)絡(luò)流量并降低2014-02-26利用html5的websocket實(shí)現(xiàn)websocket聊天室
利用html5的websocket實(shí)現(xiàn)一個(gè)聊天室,大家可以參考使用2013-12-12html5-websocket基于遠(yuǎn)程方法調(diào)用的數(shù)據(jù)交互實(shí)現(xiàn)
一般在傳統(tǒng)網(wǎng)頁(yè)中注冊(cè)用戶信息都是通過(guò)post或ajax提交到頁(yè)面處理,到了HTML5后我們有另一種方法就是通過(guò)websocket進(jìn)行數(shù)據(jù)交互,接下來(lái)將詳細(xì)介紹,需要了解的朋友可以參考下2012-12-04- 這篇文章主要介紹了基于HTML5的WebSocket的實(shí)例代碼,需要的朋友可以參考下2018-08-15