WebSockets与Flash中的原始TCP套接字

时间:2011-05-11 14:55:05

标签: flash sockets html5 actionscript websocket

什么WebSockets添加到原始TCP连接? 我为什么要使用WebSockets?

我想听听赞成和赞成:

  • 好:WebSockets添加了一些有用的东西,如自动连接,会话ID等。
  • 错误:WebSockets增加了很多开销

我只有Flash客户端,不需要支持Javascript客户端。

1 个答案:

答案 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套接字(这样很容易转换)。

<强>更新

对您或其他人来说可能有用的一些链接:

  • AS3WebSocket:Flash应用程序的WebSockets客户端库。
  • web-socket-js:在Flash中为Javascript应用程序实现的WebSockets后备/ polyfill(向使用Flash但没有本机WebSockets的浏览器添加WebSockets支持)。