WebSockets与Flash中的原始TCP套接字

luc*_*nov 21 sockets flash html5 actionscript websocket

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

我想听听利弊和专业人士的喜欢:

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

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

kan*_*aka 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等内容未在WebSocket中定义,尽管在WebSockets上构建的几个Javascript框架具有此功能,例如Socket.IO.如果您正在从Flash应用程序执行WebSockets,那么您需要进行自己的会话管理或将现有的会话管理库转换为使用WebSockets而不是Flash套接字(这非常容易转换).

更新:

可能对您或其他人员有用的链接:

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