理清 WebSocket 和 HTTP 的關係

2021-10-09 20:39:39 字數 1158 閱讀 7283

基本上但凡提到websocket和http的關係都會有以下兩條

websocket和http都是基於tcp協議的兩個不同的協議

websocket依賴於http連線

websocket依賴於http連線,那麼它如何從連線的http協議轉化為websocket協議?

websocket為什麼要依賴於http協議的連線?

每個websocket連線都始於乙個http請求。具體來說,websocket協議在第一次握手連線時,通過http協議在傳送websocket支援的版本號,協議的字版本號,原始位址,主機位址等等一些列字段給伺服器端:

注意,關鍵的地方是,這裡面有個upgrade首部,用來把當前的http請求公升級到websocket協議,這是http協議本身的內容,是為了擴充套件支援其他的通訊協議。如果伺服器支援新的協議,則必須返回101: 

至此,http請求物盡其用,如果成功觸發onopen事件,否則觸發onerror事件,後面的傳輸則不再依賴http協議。總結一下,這張圖比較貼切:

websocket設計上就是天生為http增強通訊(全雙工通訊等),所以在http協議連線的基礎上是很自然的事,並因此而能獲得http的諸多便利。這諸多便利中有一條很重要,基於http連線將獲得最大的乙個相容支援,比如即使伺服器不支援websocket也能建立http通訊,只不過返回的是onerror而已,這顯然比伺服器無響應要好的多。

web Worker和webSocket 的使用

1 web worker的使用 function webworkeruser params 接受worker傳送過來的資料。worker.onerror function event worker不能完成給定任務時會觸發error事件 worker.terminate 立即終止乙個worker的執行...

WebSocket 和 Golang 實現聊天功能

這個示例應用程式展示了如何使用 websocket,golang 和 jquery 建立乙個簡單的web聊天應用程式。這個示例的源 在 這個示例需要 golang 開發環境。該頁面描述如何安裝開發環境。go get gary.burd.info go websocket chat go websoc...

GoEasy和自己搭建websocket服務的區別

一 成本 大家都知道,軟體公司的人力成本巨大,乙個小專案配2個程式設計師 1個測試人員,工資以及各項福利,基本上都是上萬了。你要搭建乙個基本能用的websocket服務,兩個程式設計師一天兩天是搞不定的。goeasy一年的服務費用,最便宜的只要幾百,最貴的也就一萬多。這麼一對比,你會發現使用goea...