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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WebSoket 的广泛应用

發(fā)布時(shí)間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebSoket 的广泛应用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目前大多數(shù)網(wǎng)站都在使用的傳統(tǒng) HTTP 協(xié)議,即由 Web 服務(wù)器通過(guò) HTTP 接收并響應(yīng)來(lái)自客戶端的消息,整個(gè)發(fā)起請(qǐng)求與響應(yīng)的過(guò)程類似我們點(diǎn)外賣,由以下 2 部分構(gòu)成:

  • 下訂單(發(fā)起請(qǐng)求):用戶(客戶端)下了一個(gè)訂單(HTTP 請(qǐng)求)給餐廳(服務(wù)器)。

  • 接到訂單后對(duì)訂單進(jìn)行處理(返回對(duì)應(yīng)狀態(tài)碼):餐廳能夠做這個(gè)菜(擁有對(duì)應(yīng)資源),就開(kāi)始準(zhǔn)備(服務(wù)器獲取資源),并返回已接單的信息(HTTP 狀態(tài)碼 200 等)。如果餐廳無(wú)法制作(沒(méi)有對(duì)應(yīng)資源),則直接拒絕返回給用戶下單失敗的訊息(HTTP 狀態(tài)碼404 等)

在這整個(gè)過(guò)程中,餐廳都不會(huì)看到用戶是誰(shuí),只需要接到訂單就可以進(jìn)行判斷并返回信息。也就是說(shuō)服務(wù)器僅需要判斷 HTTP 請(qǐng)求,并作出響應(yīng)(HTTP 相關(guān)狀態(tài)碼:200/403/404 等)。

上述流程中,服務(wù)器存儲(chǔ)內(nèi)容,但是這些內(nèi)容更新獲取必須由客戶端再次請(qǐng)求,服務(wù)器無(wú)法將更新主動(dòng)發(fā)送給指定用戶,顯得十分笨拙。為了改進(jìn)這一項(xiàng), Long Poll 以及 Ajax 輪詢應(yīng)運(yùn)而生。可是這兩種方式的成本極大,而且必須要客戶端保持聯(lián)系,一旦斷開(kāi)就需要重新發(fā)起請(qǐng)求。所以在這兩種方式的前提下,WebSocket 誕生了。

什么是 WebSoket?

為了能夠滿足隨時(shí)獲取數(shù)據(jù)的需求,,WebSocket 協(xié)議誕生,并在 2011 年成為國(guó)際標(biāo)準(zhǔn)。 作為 HTML 5 規(guī)范的組成部分之一,WebSocket 是一種全新的協(xié)議。它將 TCP 的 Socket(套接字)應(yīng)用在了 Web page 上,從而使通信雙方建立起一個(gè)保持在活動(dòng)狀態(tài)連接通道,并且屬于全雙工(雙方同時(shí)進(jìn)行雙向通信)。借助 WebSocket 我們可以在開(kāi)放網(wǎng)絡(luò)上進(jìn)行多人游戲,實(shí)時(shí)聊天,多人協(xié)作等,目前大多數(shù)瀏覽器都支持該協(xié)議,包括 Google Chrome,Firefox,Safari,Opera,Microsoft Edge和Internet Explorer。

WebSocket 的優(yōu)勢(shì)

WebSocket 最大的特點(diǎn)就是,客戶端可以主動(dòng)發(fā)送消息到服務(wù)端,服務(wù)端也可以主動(dòng)向客戶端發(fā)送消息,實(shí)現(xiàn)雙向通訊。

上圖可以看出,相比較輪詢,WebSocket 在第一次 HTTP 握手之后,就改走 WebSocket 了,對(duì)于 HTTP 的長(zhǎng)連接(非持久連接),WebSocket 的持久連接更具實(shí)效性。

WebSocket 其優(yōu)勢(shì)主要包括以下幾個(gè)方面:

  • 實(shí)時(shí)性,客戶端和服務(wù)端可以隨時(shí)互相推送消息,延遲更小,短時(shí)間內(nèi)可以更多的推送消息。

  • 兼容性,與 HTTP 有著很好的兼容性,握手時(shí)采用HTTP協(xié)議,默認(rèn)也是端口80,443 ,可以很大部分繞過(guò)防火墻的限制。

  • 保持連接狀態(tài),創(chuàng)建連接后,保持其狀態(tài),之后的通信可以省略其信息。

  • 協(xié)議標(biāo)識(shí)符為 ws,如果加密為 wss

WebSocket 連接過(guò)程示例

客戶端

GET /chat HTTP/1.1 Host: 127.0.0.1:4000 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: aFeKKHNhbFYZSBub14oUK== Origin: http://localhost:4000 Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13

服務(wù)端響應(yīng)

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat

重要字段說(shuō)明:

  • Connection:Upgrade,表示客戶端協(xié)議升級(jí)。

  • Upgrade:WebSocket,升級(jí)到 WebSocket 協(xié)議。

  • Sec-WebSocket-Key:隨機(jī)字符串,對(duì)應(yīng)服務(wù)端響應(yīng)的 Sec-WebSocket-Accept 字段,將Sec-WebSocket-Key:指定方式計(jì)算后作為服務(wù)端響應(yīng) Sec-WebSocket-Accept 的值。通過(guò)這樣,避免 HTTP 協(xié)議誤以為 WebSocket 協(xié)議。

  • Sec-WebSocket-Version:表示支持的 WebSocket 版本。

WebSocket 用途和場(chǎng)景

社交,聊天等

聊天應(yīng)用特點(diǎn)就是低延遲,高及時(shí),采用的 WebSocket 協(xié)議,用戶將消息發(fā)送到服務(wù)器,服務(wù)器直接將消息發(fā)送給收件人。另外,服務(wù)器還可以在通道中存儲(chǔ)多個(gè)連接,用戶能實(shí)現(xiàn)一次性向多人發(fā)送消息,或者查看房間內(nèi)多個(gè)人的信息,實(shí)現(xiàn)了實(shí)時(shí)溝通交流。

多人游戲

多人游戲比較常見(jiàn)的模式就是,服務(wù)器用來(lái)存儲(chǔ)狀態(tài),玩家將改變動(dòng)作的狀態(tài)發(fā)送到服務(wù)器,然后更新游戲狀態(tài)給所有玩家,使用 HTTP 的話,每個(gè)玩家需要定期向服務(wù)器請(qǐng)求狀態(tài)。使用 WebSocket 后,玩家的每個(gè)動(dòng)作將實(shí)時(shí)的推送給所有玩家。

多人協(xié)作

需要多人在共享文檔上一起工作嗎?可以使用 WebSocket 實(shí)現(xiàn)多人共同協(xié)作,每個(gè)人的動(dòng)作更新時(shí),都會(huì)推送給所有參與者。

地圖等定位相關(guān)

每當(dāng)用戶的 GPS 坐標(biāo)更改時(shí),更新服務(wù)器后,就會(huì)根據(jù)用戶的最新坐標(biāo)推送新的數(shù)據(jù)。

股票、基金報(bào)價(jià)展示

金融界數(shù)據(jù)瞬息萬(wàn)變,幾乎是每毫秒都在變化。如果采用傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)則無(wú)法滿足實(shí)時(shí)性,使用 WebSocket 可以流式更新這些數(shù)據(jù)變化而不需要等待。

目前又拍云已經(jīng)全面支持 WebSocket,為采用 ws/wss 協(xié)議進(jìn)行通信的客戶提供優(yōu)質(zhì)的加速服務(wù),能有效降低延遲,提高傳輸效率。產(chǎn)品特性及優(yōu)勢(shì)包括:

智能路由: 實(shí)時(shí)探測(cè)互聯(lián)網(wǎng)線路,鏈路耗時(shí)跟蹤分析,智能選擇最優(yōu)路徑。

協(xié)議優(yōu)化: 通過(guò)增大 TCP 窗口初始大小,調(diào)節(jié)慢啟動(dòng)閥值等等,解決傳統(tǒng)協(xié)議存在的缺陷,提高傳輸效率。

支持WSS: 用戶可自主申請(qǐng)、綁定 SSL 證書(shū),一鍵開(kāi)啟 WSS 加速。同時(shí)又拍云提供多種品牌的免費(fèi)、付費(fèi)證書(shū)申購(gòu),為用戶提供一站式 WSS 安全加速解決方案。

數(shù)據(jù)統(tǒng)計(jì): 支持實(shí)時(shí)帶寬、流量查詢,全平臺(tái)自助化查詢,日志分析及下載支持,時(shí)刻掌控業(yè)務(wù)全局。

WebSocket 依賴 HTTP 協(xié)議而存在,但是同時(shí) HTTP 和 WebSocket 都是基于 TCP 協(xié)議的不同協(xié)議,兩者沒(méi)有沖突。

總結(jié)

以上是生活随笔為你收集整理的WebSoket 的广泛应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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