websocket和http的區別

11235yuan發表於2024-05-22

1、websocket
1.1 介紹
WebSocket 是一種實時通訊協議,它允許客戶端和伺服器之間進行雙向通訊,而不需要每次請求都重新建立連線。WebSocket 是 HTML 5 中的新功能,它建立在 HTTP 協議之上,透過握手協議來建立持久化的連線。WebSocket 的握手協議比 HTTP 的握手協議更簡單,因為 WebSocket 的連線建立後,客戶端和伺服器之間的資料交換是以二進位制形式進行的,而不需要像 HTTP 那樣進行文字解析。

1.2 主要特點
實時通訊協議,允許雙向通訊。
建立在 HTTP 協議之上,透過握手協議來建立連線。
使用二進位制協議傳輸資料,速度更快。
支援跨域通訊。
支援伺服器推送資料

2、Http
2.1 介紹
HTTP 全稱是“超文字傳輸協議”(Hypertext Transfer Protocol),是 Web 應用程式最為廣泛使用的協議之一。它建立在 TCP 協議之上,透過請求-響應模式來傳輸資料。在 HTTP 中,客戶端傳送一個請求到伺服器,伺服器接收到請求後,返回相應的響應。這個過程通常涉及到以下步驟:
客戶端向伺服器傳送請求報文,報文中包含了請求方法、請求 URL、請求頭和請求體等資訊。
伺服器接收到請求後,進行處理並返回響應報文,響應報文中包含了狀態碼、響應頭和響應體等資訊。
客戶端接收到響應後,對響應進行解析並進行相應的操作。
HTTP 是一種無狀態協議,每個請求-響應週期都是獨立的。這意味著伺服器不能維護客戶端的狀態資訊,每次請求都需要重新驗證身份和許可權等資訊。為了解決這個問題,HTTP 引入了 cookie 和 session 機制,透過在客戶端和伺服器之間傳遞狀態資訊來實現持久化狀態。

2.2 主要特點
請求-響應模式,每個請求都是獨立的。
無狀態協議,伺服器不能維護客戶端的狀態資訊。
基於文字協議,易於理解和除錯。
使用明文傳輸資料,安全性較低。
適用於請求-響應式的 Web 應用程式。

3、兩者的區別
1、含義不同
Websocket:WebSocket 是一種在單個 TCP 連線上進行全雙工通訊的協議。
Http:超文字傳輸協議(Hyper Text Transfer Protocol,HTTP)是一個簡單的請求-響應協議,它通常執行在 TCP 之上,是單向的通訊協議。
2、連線方式不同
Websocket:WebSocket 是需要瀏覽器和伺服器握手進行建立連線的,只需要建立一次連線,之後可以保持連線狀態並進行雙向通訊。
Http:http 是瀏覽器發起向伺服器的連線,伺服器預先並不知道這個連線,每次請求都需要重新建立連線。
3、連線長度不同
Websocket:websocket 是持久連線。
Http:http 是短連線 (http 可以透過 Ajax 一直髮送請求和長輪詢保持一段時間內的連線,但本質上還是短連線)。
4、連線狀態不同
Websocket:websocket 是有狀態的雙向連線。
Http:http 是無狀態的單向連線。
5、協議開頭不同
Websocket:websocket 的協議是以 ws/wss 開頭。
Http:http 對應的是 http/https。
6、資料傳輸方式不同
Websocket:客戶端和伺服器之間的通訊是以二進位制形式進行的。這意味著,WebSocket 可以更快地傳輸資料,並且能夠處理更復雜的資料型別。
Http:資料的傳輸是透過請求-響應模式進行的。客戶端傳送請求,伺服器返回響應。在這個過程中,客戶端和伺服器之間的通訊都是透過文字進行的。
7、支援的資料型別不同
Websocket:可以支援更復雜的資料型別,例如影片流和實時遊戲資料等。
Http:通常只支援文字、影像和音訊等靜態資料型別。
8、安全性不同
Websocket:資料是以二進位制形式進行傳輸的,因此安全性更高,不容易被竊取或篡改。
Http:資料是以明文形式進行傳輸的,因此容易被竊取或篡改。
9、實時性不同
Websocket:可以實現實時的雙向通訊,因此在實時性要求較高的應用中更為適用。
Http:客戶端只能在收到伺服器響應後才能更新資料。這意味著,在實時性要求較高的應用中,HTTP 可能無法滿足需求。

相關文章