-
1 # IT猿猿
-
2 # Web前端進階指南
說這個之前呢,我們先來看看下面的這段程式碼:
瀏覽器端使用WebSocket程式碼示例:
這就是一個簡單的建立Websocket連結傳送字串資料監聽資料的示例。
我們一直使用的http協議只能由客戶端發起,服務端無法直接進行推送,這就導致瞭如果服務端有持續的變化客戶端想要獲知就比較麻煩。WebSocket協議就是為了解決這個問題應運而生。
WebSocket 物件提供了用於建立和管理 WebSocket 連線,以及可以透過該連線傳送和接收資料的 API。
WebSocket 使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在 WebSocket API 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並進行雙向資料傳輸。
在 WebSocket API 中,瀏覽器和伺服器只需要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以資料互相傳送。
現在,很多網站為了實現推送技術,所用的技術都是 Ajax 輪詢。輪詢由瀏覽器對伺服器發出HTTP請求,然後由伺服器返回最新的資料給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向伺服器發出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的資料可能只是很小的一部分,顯然這樣會浪費很多的頻寬等資源。
HTML5 定義的 WebSocket 協議,能更好的節省伺服器資源和頻寬,並且能夠更實時地進行通訊。
瀏覽器透過 JavaScript 向伺服器發出建立 WebSocket 連線的請求,連線建立以後,客戶端和伺服器端就可以透過 TCP 連線直接交換資料。
當你獲取 Web Socket 連線後,你可以透過 send() 方法來向伺服器傳送資料,並透過 onmessage 事件來接收伺服器返回的資料。
-
3 # 老夫科技說
WebSocket是一種在單個TCP連線上進行全雙工通訊的協議。WebSocket通訊協議於2011年被IETF定為標準RFC 6455,並由RFC7936補充規範。WebSocket API也被W3C定為標準。
WebSocket使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在WebSocket API中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並進行雙向資料傳輸。
簡單來說,就是實現通訊的協議,在HTML5中定義的,可使用來在前端實現線上通訊。
WebSocket 是獨立的、建立在 TCP 上的協議。
Websocket 透過HTTP/1.1 協議的101狀態碼進行握手。
為了建立Websocket連線,需要透過瀏覽器發出請求,之後伺服器進行迴應,這個過程通常稱為“握手”(handshaking)。
-
4 # Java小虎
我就說簡單理解。
它主要用於需要網路長時間保持的特定場景。
比如說,打車時你自己可以看到車輛行駛軌跡和路線,或者說 訂完外賣後,外賣小哥的騎行送餐路線。
回覆列表
WebSocket 是 HTML5 開始提供的一種在單個 TCP 連線上進行全雙工通訊的協議。
WebSocket 使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在 WebSocket API 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並進行雙向資料傳輸。
在 WebSocket API 中,瀏覽器和伺服器只需要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以資料互相傳送。
現在,很多網站為了實現推送技術,所用的技術都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對伺服器發出HTTP請求,然後由伺服器返回最新的資料給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向伺服器發出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的資料可能只是很小的一部分,顯然這樣會浪費很多的頻寬等資源。
HTML5 定義的 WebSocket 協議,能更好的節省伺服器資源和頻寬,並且能夠更實時地進行通訊。
瀏覽器透過 JavaScript 向伺服器發出建立 WebSocket 連線的請求,連線建立以後,客戶端和伺服器端就可以透過 TCP 連線直接交換資料。
當你獲取 Web Socket 連線後,你可以透過 send() 方法來向伺服器傳送資料,並透過 onmessage 事件來接收伺服器返回的資料。
以下 API 用於建立 WebSocket 物件。
var Socket = new WebSocket(url, [protocol] );
以上程式碼中的第一個引數 url, 指定連線的 URL。第二個引數 protocol 是可選的,指定了可接受的子協議。
WebSocket 例項WebSocket 協議本質上是一個基於 TCP 的協議。
為了建立一個 WebSocket 連線,客戶端瀏覽器首先要向伺服器發起一個 HTTP 請求,這個請求和通常的 HTTP 請求不同,包含了一些附加頭資訊,其中附加頭資訊"Upgrade: WebSocket"表明這是一個申請協議升級的 HTTP 請求,伺服器端解析這些附加的頭資訊然後產生應答資訊返回給客戶端,客戶端和伺服器端的 WebSocket 連線就建立起來了,雙方就可以透過這個連線通道自由的傳遞資訊,並且這個連線會持續存在直到客戶端或者伺服器端的某一方主動的關閉連線。