什么是WebSocket?
1鳍怨、在HTML5出現(xiàn)
2涩金、獨立于http的實時通信協(xié)議哪痰,全雙工
瀏覽器和服務(wù)器之間提供了一個基于TCP連接的雙向通道诈唬。
在WebSocket出現(xiàn)之前生音,服務(wù)端想要向客戶端推送數(shù)據(jù)只能通過客戶端向服務(wù)端主動發(fā)送請求才能獲得。
構(gòu)建實時的web應(yīng)用時窒升,主要采用輪詢和Comet技術(shù)缀遍。其中Comet技術(shù)又分成兩種,長輪詢機制和流技術(shù)饱须。
輪詢:一定的時間間隔向服務(wù)端發(fā)請求域醇,以頻繁的請求方式來保持客戶端和服務(wù)端的同步。
長輪詢:如果當前請求沒有數(shù)據(jù)返回蓉媳,則繼續(xù)保持當前請求的網(wǎng)絡(luò)連接狀態(tài)譬挚,直到服務(wù)端有數(shù)據(jù)返回或連接超時。
????????減少了客戶端和服務(wù)端交互的次數(shù)酪呻。
流:客戶端的頁面向服務(wù)端發(fā)出一個長連接的請求减宣。服務(wù)器接收這個請求后作出回應(yīng)并不斷更新連接狀態(tài)從而保證
????客戶端和服務(wù)器的連接不過期。這種就可以保持將服務(wù)端的信息持續(xù)不斷地發(fā)向客戶端玩荠。
這些實質(zhì)上都是用ajax的方法模擬實時效果的漆腌,沒有實現(xiàn)真正的實時技術(shù)。
WebSocket是獨立的基于TCP的協(xié)議阶冈,和http的關(guān)系只停留在WebSocket的握手被http服務(wù)器當作
Upgrade request http包處理闷尿。
協(xié)議關(guān)鍵:
Response Headers
Upgrade: websocket
Request Headers
Upgrade: websocket
一旦建立了連接,服務(wù)端與客戶端之間就可以以全雙工方式進行通信女坑。
什么是Scoket.io?
它是由js實現(xiàn),基于node.js,支持WebSocket協(xié)議用于實時通信悠砚,跨平臺的開源框架
Socket.io將Websocket和輪詢機制以及其它的實時通信方式封裝成了通用的接口,并且在服務(wù)端實現(xiàn)了這些實時通信機制堂飞。
Socket.io中主要使用了websocket,將輪詢作為其輔助選項绑咱,提供的是相同的接口绰筛。和node.js一樣,也是事件驅(qū)動的描融。
不是所有的瀏覽器都支持websocket,通過socket.io的封裝铝噩,你不用關(guān)心里面用了什么連接方式。在任何瀏覽器里都可以使用socket.io來建立異步的連接窿克。
socket.io包含了服務(wù)端和客戶端的庫骏庸,如果在瀏覽器中使用了socket.io的js,服務(wù)端也必須同樣適用。
參考鏈接:
https://www.cnblogs.com/mazg/p/5467960.html