本文分享自天翼云開發者社區《天翼云CDN全站加速產品對websocket協議的支持》,作者:郭****迎
1、背景介紹
HTTP 協議有一個缺陷:通信只能由客戶端發起,這種單向請求的特點,注定了如果服務器有連續的狀態變化,客戶端要獲知就只能使用輪詢的方案,
輪詢是在特定的時間間隔(如每1秒),由瀏覽器對服務器發出HTTP請求,然后由服務器回傳最新的資料給客戶端的瀏覽器,這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發出請求,顯而易見,輪詢不僅效率特別低,且特別浪費帶寬資源,因為HTTP請求可能包含較長的頭部,其中真正有效的資料可能只是很小的一部分,顯然這樣會浪費很多帶寬資源,
因此,工程師們一直在思考,有沒有更好的方法,websocket 就是這樣發明的,websocket 協議誕生于2008年,2011年成為國際標準,目前所有瀏覽器均已支持,它最大的特點全雙工通信,瀏覽器和服務器只需要做一個握手的動作,然后瀏覽器和服務器之間就形成了一條快速通道,兩者之間就可以直接互相傳送資料了,如下右圖所示,可見,websocket 協議,能更好的節省服務器資源和帶寬,并且能夠更實時地進行通訊,

websocket的優勢:
- 較少的控制開銷,在連接創建后,服務器和客戶端之間交換資料時,用于協議控制的資料包頭部相對較小,
- 更強的實時性,由于協議是全雙工的,所以服務器可以隨時主動給客戶端下發資料,相對于HTTP請求需要等待客戶端發起請求服務端才能回應,延遲明顯更少;即使是和Comet等類似的長輪詢比較,其也能在短時間內更多次地傳遞資料,
- 保持連接狀態,與HTTP不同的是,Websocket需要先創建連接,這就使得其成為一種有狀態的協議,之后通信時可以省略部分狀態資訊,而HTTP請求可能需要在每個請求都攜帶狀態資訊(如身份認證等),
- 更好的二進制支持,Websocket定義了二進制幀,相對HTTP,可以更輕松地處理二進制內容,
- 可以支持擴展,Websocket定義了擴展,用戶可以擴展協議、實作部分自定義的子協議,
- 更好的壓縮效果,相對于HTTP壓縮,Websocket在適當的擴展支持下,可以沿用之前內容的背景關系,在傳遞類似的資料時,可以顯著地提高壓縮率,
- 與 HTTP 協議有著良好的兼容性,默認埠也是80和443,并且握手階段采用 HTTP 協議,因此握手時不容易屏蔽,能通過各種 HTTP 代理服務器,
- 沒有同源限制,客戶端可以與任意服務器通信,
2、websocket應用場景
場景一:彈幕
彈幕的流程是終端用戶A在自己的客戶端廣播了一條資訊,這條資訊需要在與其他N個用戶端發送的彈幕資訊一并展示在A這邊,它需要馬上顯示到螢屏上,對實時性要求極高,使用websocket可以在有新彈幕產生時,服務器能夠迅速推送給所有用戶端,保障彈幕實時性,
場景二:在線教育
在線教育跨越了時空的限制,學生與老師進行一對多/一對一的在線授課,老師在客戶端內撰寫的筆記、大綱、白板資訊等資訊,需要實時推送至多個學生的客戶端,同時在課堂上,通話、文字聊天、實時解題等互動的實時性要求非常高,需要通過websocket協議來完成,
場景三:金融產品實時資訊查詢
股票價格瞬息萬變,如果顯示資料不及時,很有可能會影響用戶的收益,需要通過websocket協議流式更新資料變化,將價格實時推送至世界各地的客戶端,方便交易員迅速做出交易判斷,
場景四:體育實況更新
由于全世界體育愛好者數量眾多,比賽實況成為他們最為關心的熱點,websocket能夠助力體育新聞類服務的用戶降低延時,獲得實時的更新,
場景五:視頻會議和互動直播
盡管視頻會議并不能代替和真人相見,但是應用場景眾多,而互動直播和視頻會議中的連麥的服務對低延時的要求非常高,試想主播或者你的主管說了一句話后,你要10秒后才能聽到,那你們是根本無法進行正常交流的 ,websocket可以幫助兩端或多端接入會議/直播的用戶實時傳遞資訊,
3、天翼云全站加速對websocket協議的支持
天翼云全站加速產品支持對webscoket協議和http/https協議可同時加速,即同一個域名可以既有http/https協議,又有websocket加速,您無需拆分域名,使用全站加速產品就可以實作對域名下http/https協議的應用和websocket協議的應用同時加速,全站加速節點會自動識別客戶端與全站加速邊緣節點通信使用的協議,自動切換協議,通常情況下,websocket協議的應用多為動態業務,對實時性要求很高,全站加速的動態探測選路能力可以為websocket應用選擇最快的回源路徑,提升websocket業務的訪問效果,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/552951.html
標籤:其他
上一篇:Vulnhub之DriftingBlues 5靶機詳細測驗程序(得到root shell)
下一篇:返回列表
