WebSockets是在原始TCP连接的基础上新增了什么?为什么应该使用WebSockets?
我想了解它们的优缺点,例如:
- 优点:WebSockets添加了一些有用的功能,如自动重连、会话ID等。
- 缺点:WebSockets增加了很多开销。
我只需要支持Flash客户端,不需要支持JavaScript客户端。
WebSockets是在原始TCP连接的基础上新增了什么?为什么应该使用WebSockets?
我想了解它们的优缺点,例如:
我只需要支持Flash客户端,不需要支持JavaScript客户端。
在浏览器的 Web 应用程序中,您无法使用原始套接字。即使是来自 Flash 的“原始”套接字连接也不真正是原始的,因为您必须回答策略文件请求以获得CORS安全(这是 WebSockets 握手的一部分原因)。
在初始 WebSocket 握手之后,WebSocket 消息每帧有两个字节的框架开销(Hixie-* 有 '\x00...\xff',而 HyBi-07 有两个字节的头文件),因此与常规套接字相比,开销非常小。
WebSocket 握手是一个与 HTTP 兼容的升级请求,因此很容易将 WebSockets 支持集成到现有的 Web 服务器中,并使用现有的 Web 端口(80/443),这意味着 WebSocket 连接也更容易集成到现有的防火墙规则中。
HTTP 兼容的握手还意味着现有的 HTTP 身份验证机制可以透明地与 WebSockets 一起使用。此外,WebSockets 可以通过现有的网络代理进行代理,几乎不需要修改。
在 WebSockets 协议 rev(HyBi-07)的下一个版本中,对于恶意的 Web 中介机构,采用客户端对服务器 XOR 掩码对有效载荷数据进行保护。
像自动重新连接、会话 ID 等类似的事情在 WebSockets 中并没有定义,尽管基于 WebSockets 构建的几个 JavaScript 框架有这些功能,例如Socket.IO。如果您正在从 Flash 应用程序中使用 WebSockets,则需要进行自己的会话管理或将现有的会话管理库转换为使用 WebSockets 而不是 Flash 套接字(这应该是很容易转换的)。
更新:
以下是对您或其他来此处的人有用的一些链接: