4 WebSocket協議開發

2021-09-10 08:17:12 字數 1056 閱讀 1447

http通訊是客戶端控制的一請求一應答模式。

不適用低延遲應用。

如果有新資料可用時,立即將資料傳送到客戶端。需要通過長輪詢等方式實現。

而websocket將網路套接字引入客戶端和服務端,瀏覽器和伺服器可以通過套接字建立持久的連線,雙方隨時都可以互發資料給對方。

(1)半雙工協議。資料可以在客戶端和服務端兩個方向上傳輸,但是同一時刻,只有乙個方向上的資料傳送

(2)訊息冗長繁瑣,包含請求頭、請求體、換行符等,可用資料比例低,可能只有請求體中的資料

(3)如果使用長輪詢實現實時推送,可能會引來黑客針對長輪詢的攻擊

長輪詢:客戶端每隔1s向服務端傳送請求,然後服務端響應,通常用於實時推送新資料而設計。

由於http request的header是冗長的,所以客戶端頻繁請求,會占用很多的頻寬和伺服器資源。

html5定義了websocket協議,提供一種基於tcp的,瀏覽器和伺服器間的全雙工網路通訊技術,同一時刻,可以在不同方向上通訊,即可以同時接收和傳送訊息。

客戶端向服務端發起乙個http請求,包含乙個附加頭資訊,其中upgrade:websocket表明這是乙個申請協議公升級的http請求

服務端解析這些附加的頭資訊,然後生成應答資訊返回給客戶端,連線建立成功。

這個連線會一直存在,直到有一方主動關閉連線。

握手成功後,客戶端服務端通過"message"的方式通訊

乙個訊息由乙個或多個區別於網路層的幀組成。

幀有自己對應的型別,屬於同乙個訊息的多個幀具有型別相同的資料。資料型別可以是文字、二進位制、控制幀(協議級信令,如訊號)

通常是由服務端關閉,當時如果在乙個合理的時間週期後沒有收到服務端的tcp close,客戶端可以發起tcp close。

握手關閉訊息帶有乙個狀態碼和乙個可選的關閉原因,必須傳送乙個close控制幀。

原始碼參見

WebSocket握手協議

connection keep alive 客戶端 啦啦啦,有沒有新資訊 request 服務端 沒有 response 客戶端 啦啦啦,有沒有新資訊 request 服務端 沒有。response 客戶端 啦啦啦,有沒有新資訊 request 服務端 你好煩啊,沒有啊。response 客戶端 啦...

WebSocket協議詳解

1.websocket 是什麼 websocket 是html5提出的乙個協議規範,參考rfc6455 websocket,通過乙個握手的機制,客戶端 瀏覽器 和伺服器 webserver 之間建立乙個tcp連線,從而方便c s之間的通訊。在websocket出現之前 web互動一般是基於 http...

WebSocket協議介紹

websocket,即web瀏覽器與web伺服器之間全雙工通訊標準,其中,websocket協議由ietf定位標準,websocket api由w3c定位標準。一旦web伺服器與客戶端之間建立起websocket協議的通訊連線,之後所有的通訊都依靠這個專用協議進行。通訊過程中互相傳送json xml...