面試題: 什么是websocket
參考鏈接:http://www.ruanyifeng.com/blog/2017/05/websocket.html?utm_source=tuicool&utm_medium=referral
1. websocket使用也比較多的,它和http協議沒有太多關系,但是有交集在於:(Websocket 其實是一個新協議,跟 HTTP 協議基本沒有關系,只是為了兼容現有瀏覽器,所以在握手階段使用了 HTTP)
2. 首先,WebSocket 是一個持久化的協議,相對於 HTTP 這種非持久的協議來說。(相對於http來說,http是一次請求一次響應,結束:request--response結束。在通訊過程中,一直在請求響應,反復如此)而websocket通過一次http握手,整個通訊建立在一次連接狀態中,服務端會一直知道你的信息,知道關閉websocket,不需要服務端反復解析。在傳輸中節省流量和時間,提高性能
3. HTTP 協議有一個缺陷:通信只能由客戶端發起。而websocket協議,實現了服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發送信息,是真正的雙向平等對話,屬於服務器推送技術的一種。
http websocket區別
4. WebSocket 的用法相當簡單。
var ws = new WebSocket("wss://echo.websocket.org"); ws.onopen = function(evt) { console.log("Connection open ..."); ws.send("Hello WebSockets!"); }; ws.onmessage = function(evt) { console.log( "Received Message: " + evt.data); ws.close(); }; ws.onclose = function(evt) { console.log("Connection closed."); };
圖示:
WebSocket
WebSocket協議為web應用程序客戶端和服務端之間提供了一種全雙工通信機制。
特點:
(1)握手階段采用HTTP協議,默認端口是80和443
(2)建立在TCP協議基礎之上,和http協議同屬於應用層
(3)可以發送文本,也可以發送二進制數據。
(4)沒有同源限制,客戶端可以與任意服務器通信。
(5)協議標識符是ws(如果加密,為wss),如ws://localhost:8023