摘要:跟沒(méi)有關(guān)系,只是復(fù)用了握手通道,用來(lái)升級(jí)協(xié)議。的作用輪詢客戶端以一定的時(shí)間間隔向服務(wù)端發(fā)出請(qǐng)求,以頻繁請(qǐng)求的方式來(lái)保持客戶端和服務(wù)器端的同步。如果在設(shè)定的時(shí)間段內(nèi)未收到通知,則服務(wù)器發(fā)送響應(yīng)以終止打開(kāi)的請(qǐng)求。
webSocket是什么
webSocket是HTML5新出的一種協(xié)議,底層是基于TCP/IP協(xié)議的。跟http沒(méi)有關(guān)系,只是復(fù)用了http握手通道,用來(lái)升級(jí)協(xié)議。
webSocket的作用輪詢:客戶端以一定的時(shí)間間隔向服務(wù)端發(fā)出請(qǐng)求,以頻繁請(qǐng)求的方式來(lái)保持客戶端和服務(wù)器端的同步。缺點(diǎn):
瀏覽器需要不斷的向服務(wù)器發(fā)出請(qǐng)求,然而HTTP請(qǐng)求可能包含較長(zhǎng)的頭部,其中真正有效的數(shù)據(jù)可能只是很小的一部分,顯然這樣會(huì)浪費(fèi)很多的帶寬等資源。
長(zhǎng)輪詢:瀏覽器向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器將請(qǐng)求保持打開(kāi)一段時(shí)間。如果在該時(shí)間段內(nèi)收到通知,則將包含該消息的響應(yīng)發(fā)送到客戶端。如果在設(shè)定的時(shí)間段內(nèi)未收到通知,則服務(wù)器發(fā)送響應(yīng)以終止打開(kāi)的請(qǐng)求。缺點(diǎn):
當(dāng)具有較高的消息量時(shí),長(zhǎng)輪詢不會(huì)提供比傳統(tǒng)輪詢更大的性能改進(jìn)
服務(wù)器端會(huì)阻塞請(qǐng)求直到有數(shù)據(jù)傳遞或超時(shí)才返回
使用webSocket瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。
優(yōu)點(diǎn):
能更好的節(jié)省服務(wù)器資源和帶寬
支持雙向通信,實(shí)時(shí)性更強(qiáng)
可以發(fā)送文本,也可以發(fā)送二進(jìn)制數(shù)據(jù)
webSocket的使用服務(wù)端:
var app = require("express")(); var WebSocket = require("ws"); var wss = new WebSocket.Server({ port: 8080 }); wss.on("connection", function connection(ws) { ws.on("message", function incoming(message) { console.log(message); }); ws.send("the content from server"); }); app.listen(3000,() => { console.log("you are listening port 3000"); });
客戶端:
webSocket應(yīng)用場(chǎng)景社交聊天、彈幕、多玩家游戲、協(xié)同編輯、股票基金實(shí)時(shí)報(bào)價(jià)、體育實(shí)況更新、視頻會(huì)議/聊天、基于位置的應(yīng)用、在線教育、智能家居等需要高實(shí)時(shí)的場(chǎng)景
參考資料:
Comet:基于 HTTP 長(zhǎng)連接的“服務(wù)器推”技術(shù)
Benefits of WebSocket
WebSocket:5分鐘從入門到精通
《web性能優(yōu)化權(quán)威指南》
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98148.html
摘要:概述本文是系列的第一篇,主要介紹相關(guān)的基礎(chǔ)協(xié)議知識(shí)和??蛻舳耸盏巾憫?yīng)后,立即發(fā)起下一次的請(qǐng)求。收到消息通過(guò)事件來(lái)接收消息。類型則需要傳遞一個(gè)對(duì)象作為參數(shù),相關(guān)的內(nèi)容也將在本系列第二篇中進(jìn)行介紹。 概述 本文是WebSocket系列的第一篇,主要介紹WebSocket相關(guān)的基礎(chǔ)協(xié)議知識(shí)和API。由于WebSocket的相關(guān)介紹在MDN中分布較亂,初學(xué)者不太容易入門,因此通過(guò)本文將相關(guān)基礎(chǔ)...
摘要:服務(wù)端確認(rèn)協(xié)議版本,升級(jí)為協(xié)議。自己寫(xiě)了一個(gè)例子,服務(wù)端在開(kāi)始連接后,利用定時(shí)器主動(dòng)向客戶端發(fā)送隨機(jī)數(shù),客戶端也可以發(fā)給服務(wù)器消息,然后服務(wù)器返回這條消息給客戶端。 寫(xiě)在前面 webSocket是一項(xiàng)可以讓服務(wù)器將數(shù)據(jù)主動(dòng)推送給客戶端的技術(shù)。前幾天寫(xiě)了一個(gè)日志功能,日志數(shù)據(jù)需要實(shí)時(shí)更新。正好項(xiàng)目中有封裝好的WebSocket組件,且接口支持webSocket,就用它實(shí)現(xiàn)了。也是第一次用...
摘要:服務(wù)端確認(rèn)協(xié)議版本,升級(jí)為協(xié)議。自己寫(xiě)了一個(gè)例子,服務(wù)端在開(kāi)始連接后,利用定時(shí)器主動(dòng)向客戶端發(fā)送隨機(jī)數(shù),客戶端也可以發(fā)給服務(wù)器消息,然后服務(wù)器返回這條消息給客戶端。做的事情就是給頁(yè)面的元素綁定事件。 寫(xiě)在前面webSocket是一項(xiàng)可以讓服務(wù)器將數(shù)據(jù)主動(dòng)推送給客戶端的技術(shù)。前幾天寫(xiě)了一個(gè)日志功能,日志數(shù)據(jù)需要實(shí)時(shí)更新。正好項(xiàng)目中有封裝好的WebSocket組件,且接口支持webSock...
摘要:簡(jiǎn)單實(shí)現(xiàn)參考此文章只限于版本大于前期準(zhǔn)備端這里會(huì)在開(kāi)始連接時(shí)就調(diào)用這里會(huì)挺住等待發(fā)送消息先執(zhí)行這里在這里停住等待二加密實(shí)現(xiàn)這里應(yīng)該是要填寫(xiě)加密的文件此處沒(méi)有深入研究三服務(wù)器和瀏覽器的實(shí)現(xiàn)此處先執(zhí)行代碼然后再打開(kāi)瀏覽器就可以看到過(guò)程同步例子 簡(jiǎn)單實(shí)現(xiàn) 參考:https://websockets.readthedoc...PS:此文章只限于python版本大于3.6 前期準(zhǔn)備 pip in...
摘要:概述本文為協(xié)議的第十一章,本文翻譯的主要內(nèi)容為的相關(guān)注意事項(xiàng)。應(yīng)用協(xié)議使用這個(gè)協(xié)議規(guī)范互操作性注意事項(xiàng)使用時(shí)需要使用或者更高版本的協(xié)議。安全性注意事項(xiàng)見(jiàn)安全性注意事項(xiàng)一節(jié)。 概述 本文為 WebSocket 協(xié)議的第十一章,本文翻譯的主要內(nèi)容為 WebSocket 的 IANA 相關(guān)注意事項(xiàng)。 IANA 注意事項(xiàng)(協(xié)議正文) 11.1 注冊(cè)新 URI 協(xié)議 11.1.1 注冊(cè) ws 協(xié)...
閱讀 2359·2021-11-24 11:16
閱讀 2043·2021-09-30 09:47
閱讀 2010·2021-09-10 10:51
閱讀 1327·2019-08-30 14:08
閱讀 3145·2019-08-30 13:47
閱讀 1534·2019-08-30 13:02
閱讀 3238·2019-08-29 12:29
閱讀 3203·2019-08-26 17:05