3 回答

TA贡献1865条经验 获得超7个赞
您似乎假设WebSocket是HTTP的替代品。它不是。这是一个扩展。
WebSockets的主要用例是Javascript应用程序,它们在Web浏览器中运行并从服务器接收实时数据。游戏就是一个很好的例子。
在WebSockets之前,Javascript应用程序与服务器交互的唯一方法是通过XmlHttpRequest。但这些都有一个主要的缺点:服务器无法发送数据,除非客户端已明确请求它。
但新的WebSocket功能允许服务器随时发送数据。这允许实现具有低得多的延迟的基于浏览器的游戏,而不必使用诸如AJAX长轮询或浏览器插件之类的丑陋黑客。
那么为什么不使用普通的HTTP与流式请求和响应
在对另一个答案的评论中,您建议只是异步地流式传输客户端请求和响应正文。
实际上,WebSockets基本上就是这样。尝试从客户端打开WebSocket连接首先看起来像HTTP请求,但标题中的特殊指令(Upgrade:websocket)告诉服务器开始以此异步模式进行通信。WebSocket协议的初稿并不仅仅是那些以及确保服务器实际理解客户端想要异步通信的一些握手。但后来人们意识到代理服务器会被它混淆,因为它们习惯于HTTP的通常请求/响应模型。一个潜在的攻击场景中对代理服务器被发现。为了防止这种情况,有必要使WebSocket流量看起来不像任何普通的HTTP流量。这就是为什么要引入屏蔽键的原因协议的最终版本。
添加回答
举报