3 回答
TA貢獻1865條經驗 獲得超7個贊
您似乎假設WebSocket是HTTP的替代品。它不是。這是一個擴展。
WebSockets的主要用例是Javascript應用程序,它們在Web瀏覽器中運行并從服務器接收實時數據。游戲就是一個很好的例子。
在WebSockets之前,Javascript應用程序與服務器交互的唯一方法是通過XmlHttpRequest。但這些都有一個主要的缺點:服務器無法發送數據,除非客戶端已明確請求它。
但新的WebSocket功能允許服務器隨時發送數據。這允許實現具有低得多的延遲的基于瀏覽器的游戲,而不必使用諸如AJAX長輪詢或瀏覽器插件之類的丑陋黑客。
那么為什么不使用普通的HTTP與流式請求和響應
在對另一個答案的評論中,您建議只是異步地流式傳輸客戶端請求和響應正文。
實際上,WebSockets基本上就是這樣。嘗試從客戶端打開WebSocket連接首先看起來像HTTP請求,但標題中的特殊指令(Upgrade:websocket)告訴服務器開始以此異步模式進行通信。WebSocket協議的初稿并不僅僅是那些以及確保服務器實際理解客戶端想要異步通信的一些握手。但后來人們意識到代理服務器會被它混淆,因為它們習慣于HTTP的通常請求/響應模型。一個潛在的攻擊場景中對代理服務器被發現。為了防止這種情況,有必要使WebSocket流量看起來不像任何普通的HTTP流量。這就是為什么要引入屏蔽鍵的原因協議的最終版本。
添加回答
舉報
