什么WebSockets添加到原始TCP连接? 我为什么要使用WebSockets?
我想听听赞成和赞成:
我只有Flash客户端,不需要支持Javascript客户端。
答案 0 :(得分:18)
您无法在浏览器中通过Web应用程序执行原始套接字。甚至来自Flash的“原始”套接字连接也不是真正原始的,因为您必须回答策略文件请求以获得CORS安全性(WebSockets握手的部分原因)。
在初始WebSocket握手之后,WebSocket消息每帧有两个字节的帧开销(Hixie- *有'\ x00 ... \ xff'而HyBi-07有两个字节的头),所以开销几乎可以忽略不计常规插座。
WebSocket握手是一种HTTP兼容的升级请求,因此很容易将WebSockets支持集成到现有的Web服务器中并使用现有的Web端口(80/443),这意味着WebSocket连接也可以更轻松地集成到现有的防火墙规则中。
HTTP兼容握手还意味着现有的HTTP身份验证机制可以透明地与WebSockets一起工作。此外,WebSockets可以通过现有的Web代理进行代理,只需很少或不进行修改。
在WebSockets协议版本(HyBi-07)的下一版本中,它们可以防止使用客户端对服务器XOR屏蔽有效载荷数据的行为不当的Web中介。
自动重新连接,会话ID等内容未在WebSockets中定义,尽管在WebSockets上构建的几个Javascript框架具有此类Socket.IO。如果您正在从Flash应用程序执行WebSockets,那么您需要进行自己的会话管理或将现有的会话管理库转换为使用WebSockets而不是Flash套接字(这样很容易转换)。
<强>更新强>:
对您或其他人来说可能有用的一些链接: