日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebSocket原理及使用场景(转载)

發(fā)布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebSocket原理及使用场景(转载) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

由輪詢到WebSocket

1 輪詢

客戶端和服務(wù)器之間會一直進行連接,每隔一段時間就詢問一次??蛻舳藭喸?#xff0c;有沒有新消息。這種方式連接數(shù)會很多,一個接受,一個發(fā)送。而且每次發(fā)送請求都會有Http的Header,會很耗流量,也會消耗CPU的利用率。

2?長輪詢

長輪詢是對輪詢的改進版,客戶端發(fā)送HTTP給服務(wù)器之后,有沒有新消息,如果沒有新消息,就一直等待。當有新消息的時候,才會返回給客戶端。在某種程度上減小了網(wǎng)絡(luò)帶寬和CPU利用率等問題。但是這種方式還是有一種弊端:例如假設(shè)服務(wù)器端的數(shù)據(jù)更新速度很快,服務(wù)器在傳送一個數(shù)據(jù)包給客戶端后必須等待客戶端的下一個Get請求到來,才能傳遞第二個更新的數(shù)據(jù)包給客戶端,那么這樣的話,客戶端顯示實時數(shù)據(jù)最快的時間為2×RTT(往返時間),而且如果在網(wǎng)絡(luò)擁塞的情況下,這個時間用戶是不能接受的,比如在股市的的報價上。另外,由于http數(shù)據(jù)包的頭部數(shù)據(jù)量往往很大(通常有400多個字節(jié)),但是真正被服務(wù)器需要的數(shù)據(jù)卻很少(有時只有10個字節(jié)左右),這樣的數(shù)據(jù)包在網(wǎng)絡(luò)上周期性的傳輸,難免對網(wǎng)絡(luò)帶寬是一種浪費。

3 ?WebSocket

現(xiàn)在急需的需求是能支持客戶端和服務(wù)器端的雙向通信,而且協(xié)議的頭部又沒有HTTP的Header那么大,于是,Websocket就誕生了!流量消耗方面,相同的每秒客戶端輪詢的次數(shù),當次數(shù)高達數(shù)萬每秒的高頻率次數(shù)的時候,WebSocket消耗流量僅為輪詢的幾百分之一

WebSocket協(xié)議原理

Websocket是應(yīng)用層第七層上的一個應(yīng)用層協(xié)議,它必須依賴?HTTP 協(xié)議進行一次握手?,握手成功后,數(shù)據(jù)就直接從 TCP 通道傳輸,與 HTTP 無關(guān)了。

Websocket的數(shù)據(jù)傳輸是frame形式傳輸?shù)?#xff0c;比如會將一條消息分為幾個frame,按照先后順序傳輸出去。這樣做會有幾個好處:

1 大數(shù)據(jù)的傳輸可以分片傳輸,不用考慮到數(shù)據(jù)大小導(dǎo)致的長度標志位不足夠的情況。

2 和http的chunk一樣,可以邊生成數(shù)據(jù)邊傳遞消息,即提高傳輸效率。

WebSocket和Socket的區(qū)別與聯(lián)系

首先,Socket?其實并不是一個協(xié)議。它工作在 OSI 模型會話層(第5層),是為了方便大家直接使用更底層協(xié)議(一般是?TCP?或?UDP?)而存在的一個抽象層。Socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個調(diào)用接口(API)。

Socket通常也稱作”套接字”,用于描述IP地址和端口,是一個通信鏈的句柄。網(wǎng)絡(luò)上的兩個程序通過一個雙向的通訊連接實現(xiàn)數(shù)據(jù)的交換,這個雙向鏈路的一端稱為一個Socket,一個Socket由一個IP地址和一個端口號唯一確定。應(yīng)用程序通常通過”套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。

Socket在通訊過程中,服務(wù)端監(jiān)聽某個端口是否有連接請求,客戶端向服務(wù)端發(fā)送連接請求,服務(wù)端收到連接請求向客戶端發(fā)出接收消息,這樣一個連接就建立起來了??蛻舳撕头?wù)端也都可以相互發(fā)送消息與對方進行通訊,直到雙方連接斷開

WebSocket的使用場景

1.社交聊天

最著名的就是微信,QQ,這一類社交聊天的app。這一類聊天app的特點是低延遲,高即時。即時是這里面要求最高的,如果有一個緊急的事情,通過IM軟件通知你,假設(shè)網(wǎng)絡(luò)環(huán)境良好的情況下,這條message還無法立即送達到你的客戶端上,緊急的事情都結(jié)束了,你才收到消息,那么這個軟件肯定是失敗的。

WebSocket原理及使用場景2.彈幕

說到這里,大家一定里面想到了A站和B站了。確實,他們的彈幕一直是一種特色。而且彈幕對于一個視頻來說,很可能彈幕才是精華。發(fā)彈幕需要實時顯示,也需要和聊天一樣,需要即時。

3.多玩家游戲

4.協(xié)同編輯

現(xiàn)在很多開源項目都是分散在世界各地的開發(fā)者一起協(xié)同開發(fā),此時就會用到版本控制系統(tǒng),比如Git,SVN去合并沖突。但是如果有一份文檔,支持多人實時在線協(xié)同編輯,那么此時就會用到比如WebSocket了,它可以保證各個編輯者都在編輯同一個文檔,此時不需要用到Git,SVN這些版本控制,因為在協(xié)同編輯界面就會實時看到對方編輯了什么,誰在修改哪些段落和文字。

5.股票基金實時報價

金融界瞬息萬變——幾乎是每毫秒都在變化。如果采用的網(wǎng)絡(luò)架構(gòu)無法滿足實時性,那么就會給客戶帶來巨大的損失。幾毫秒錢股票開始大跌,幾秒以后才刷新數(shù)據(jù),一秒鐘的時間內(nèi),很可能用戶就已經(jīng)損失巨大財產(chǎn)了。

6.體育實況更新

全世界的球迷,體育愛好者特別多,當然大家在關(guān)心自己喜歡的體育活動的時候,比賽實時的賽況是他們最最關(guān)心的事情。這類新聞中最好的體驗就是利用Websocket達到實時的更新!

7.視頻會議/聊天

視頻會議并不能代替和真人相見,但是他能讓分布在全球天涯海角的人聚在電腦前一起開會。既能節(jié)省大家聚在一起路上花費的時間,討論聚會地點的糾結(jié),還能隨時隨地,只要有網(wǎng)絡(luò)就可以開會。

8.基于位置的應(yīng)用

越來越多的開發(fā)者借用移動設(shè)備的GPS功能來實現(xiàn)他們基于位置的網(wǎng)絡(luò)應(yīng)用。如果你一直記錄用戶的位置(比如運行應(yīng)用來記錄運動軌跡),你可以收集到更加細致化的數(shù)據(jù)。

9.在線教育

在線教育近幾年也發(fā)展迅速。優(yōu)點很多,免去了場地的限制,能讓名師的資源合理的分配給全國各地想要學(xué)習(xí)知識的同學(xué)手上,Websocket是個不錯的選擇,可以視頻聊天、即時聊天以及其與別人合作一起在網(wǎng)上討論問題…

10.智能家居

這也是我一畢業(yè)加入的一個偉大的物聯(lián)網(wǎng)智能家居的公司。考慮到家里的智能設(shè)備的狀態(tài)必須需要實時的展現(xiàn)在手機app客戶端上,毫無疑問選擇了Websocket。

11.總結(jié)

從上面我列舉的這些場景來看,一個共同點就是,高實時性!

總結(jié)

以上是生活随笔為你收集整理的WebSocket原理及使用场景(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。