標籤:串連 位元組流 通訊協議 example sock 電腦 web服務 獨立 cti
WebSocket是一個電腦通訊協議,在單個TCP串連上提供全雙工系統的通訊模式。WebSocket設計用於Web瀏覽器和Web伺服器之間的通訊,但也可以用於其他的用戶端和應用伺服器。WebSocket是獨立的基於TCP的協議。WebSocket和HTTP的關係是,WebSocket的握手被翻譯成HTTP的升級請求。WebSocket協議可以降低Web伺服器和瀏覽器之間的開銷,這個特性適合即時資料的傳輸。WebSocket的協議特性,讓客服端與伺服器之間沒有用戶端請求的請求的情況進行標準通訊成為可能,另外也可以在串連開啟的情況進行資料的收發。伺服器與瀏覽器之間的雙向通訊就按這種方式進行。協議的通訊連接埠為TCP連接埠80或者443,這樣就不會進行非Web通訊時被防火牆攔截。
不同於HTTP,WebSocket提供全雙工系統的通訊。另外WebSocket提供基於TCP的訊息流程,TCP處理位元組流。
握手:
為了建立WebSocket串連,用戶端發送WebSocket握手請求,服務端返回WebSocket握手回應,下為樣本。
用戶端請求(和HTTP一樣,每行以\r\n結尾,並且在最後必須有一空行):
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
Server response:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
握手類比HTTP,主要是為了服務端在同一連接埠即能處理HTTP串連也處理WebSocket串連。一旦串連建立,通訊就轉向了雙向二進位協議,這個協議並不遵守HTTP協議。
具體關係可以參考:
WebSocket和HTTP的區別與聯絡