websocket使用HTTP鏈結

2021-09-27 02:21:25 字數 982 閱讀 1238

背景

websocket是html5提出的新的協議規範,填補了無法長連線的空缺。在沒有websocket之前,由於http是短連線,只能由客戶端請求伺服器,一些功能(即時通訊/處理耗時的請求等)只能通過輪詢來做,不斷的輪詢伺服器是否有新的訊息。 

websocket正是為了解決這個問題而生,websocket是乙個長連線/全雙工的協議。

優點不用頻繁送http請求,只需要傳送乙個http請求進行websocket握手,接下來則可以利用該tcp連線通過websocket協議通訊,避免了傳輸多個http header的浪費。

全雙工通道,突破了http請求時只能client請求server的限制,server可以直接push訊息給client端。

可以邊生成資料邊傳遞,不需要等資料生成完畢,提高了效率

websocket資料傳輸是基於資料幀的,可以分片傳輸,不需要怕資料太大包容納不下。

websocket協議包含三個過程。 

1. 握手開啟連線(使用http協議,通過http協議建立連線,以免伺服器不支援websocket直接不予回應) 

2. 資料傳輸 

3. 握手結束連線

最近在做乙個將資料通過wifi發給伺服器的專案,讓手機實時的顯示資料波形,開始直接使用http協議,發給伺服器端,用網路除錯工具可以正常接收,但是與伺服器對接的時候,伺服器端總是收不到資料或者接收錯誤,原來伺服器端使用的是websocket的協議,於是改用tcp,socket鏈結,鏈結ip和port後,傳送http header

傳送http header的時候要注意,最後要加\r\n\r\n,不然伺服器端不認為接收到資料或者有時接收到,這可能是伺服器端的程式問題。

Websocket和http的區別

websocket websocket協議解決了伺服器與客戶端全雙工通訊的問題。注 什麼是單工 半雙工 全工通訊?資訊只能單向傳送為單工 資訊能雙向傳送但不能同時雙向傳送稱為半雙工 資訊能夠同時雙向傳送則稱為全雙工。websocket協議解析 wensocket協議包含兩部分 一部分是 握手 一部分...

理清 WebSocket 和 HTTP 的關係

基本上但凡提到websocket和http的關係都會有以下兩條 websocket和http都是基於tcp協議的兩個不同的協議 websocket依賴於http連線 websocket依賴於http連線,那麼它如何從連線的http協議轉化為websocket協議?websocket為什麼要依賴於ht...

webSocket 基本使用

安裝 websocketnpm i ws建立物件const websocket require ws const wss newwebsocket.srever 監聽事件 連線事件 wss.on connection client 接收資料事件 wss.on connection client 傳送...