當前位置:編程學習大全網 - 編程語言 - WebSocket究竟是什麽東西

WebSocket究竟是什麽東西

WebSocket協議是基於TCP的壹種新的網絡協議。它實現了瀏覽器與服務器全雙工(full-duplex)通信——允許服務器主動發送信息給客戶端。

在實現websocket連線過程中,需要通過瀏覽器發出websocket連線請求,然後服務器發出回應,這個過程通常稱為“握手”

。在 WebSocket

API,瀏覽器和服務器只需要做壹個握手的動作,然後,瀏覽器和服務器之間就形成了壹條快速通道。兩者之間就直接可以數據互相傳送。在此WebSocket

協議中,為我們實現即時服務帶來了兩大好處:

1. Header

互相溝通的Header是很小的-大概只有 2 Bytes

2. Server Push

服務器的推送,服務器不再被動的接收到瀏覽器的請求之後才返回數據,而是在有新數據時就主動推送給瀏覽器。

握手協議例子

編輯

瀏覽器請求

GET /webfin/websocket/ HTTP/1.1

Host: localhost

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg==

Origin: http://服務器地址

Sec-WebSocket-Version: 13

服務器回應

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWFB3y3FE8=

WebSocket借用http請求進行握手,相比正常的http請求,多了壹些內容。其中,

Upgrade: websocket

Connection: Upgrade

表示希望將http協議升級到Websocket協議。

Sec-WebSocket-Key是瀏覽器隨機生成的base64 encode的值,用來詢問服務器是否是支持WebSocket。

服務器返回

Upgrade: websocket

Connection: Upgrade

告訴瀏覽器即將升級的是Websocket協議

Sec-WebSocket-Accept是將請求包“Sec-WebSocket-Key”的值,與”258EAFA5-E914-47DA-95CA-C5AB0DC85B11″這個字符串進行拼接,然後對拼接後的字符串進行sha-1運算,再進行base64編碼得到的。用來說明自己是WebSocket助理服務器。

Sec-WebSocket-Version是WebSocket協議版本號。RFC6455要求使用的版本是13,之前草案的版本均應當被棄用。

更多握手規範詳見RFC6455。

  • 上一篇:計算機二級報名時間2023
  • 下一篇:利用SEO也能做全網霸屏營銷,效果屢試不爽
  • copyright 2024編程學習大全網