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

我想听听以下利弊:

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

  • 我将只有Flash客户端,而无需支持Javascript客户端。

    最佳答案

    您无法通过浏览器中的Web应用程序执行原始套接字。甚至来自Flash的“原始”套接字连接也不是真正原始的,因为您必须回答策略文件请求才能获得CORS安全性(WebSockets握手的部分原因)。

    在最初的WebSocket握手之后,WebSocket消息每帧具有两个字节的框架开销(Hixie- *具有'\x00 ...\xff'和HyBi-07具有两个字节的 header ),因此与常规套接字相比,开销几乎可以忽略不计。

    WebSocket握手是HTTP兼容的升级请求,因此可以轻松地将WebSockets支持集成到现有的Web服务器中并使用现有的Web端口(80/443),这意味着WebSocket连接还可以更轻松地集成到现有的防火墙规则中。

    HTTP兼容握手还意味着现有的HTTP身份验证机制可以与WebSockets透明地一起工作。同样,WebSockets可以由现有的Web代理进行代理,而几乎不需要修改。

    在WebSockets协议(protocol)修订版(HyBi-07)的下一个修订版中,使用客户端到服务器对有效负载数据进行XOR屏蔽,可以防止Web中间件行为异常。

    尽管在WebSockets上构建的多个Javascript框架都具有诸如Socket.IO这样的功能,但WebSockets中并未定义诸如自动重新连接, session ID之类的内容。如果要从Flash应用程序中进行WebSocket,则需要进行自己的 session 管理或将现有的 session 管理库转换为使用WebSocket而不是Flash套接字(这样转换非常容易)。

    更新:

    几个链接可能对您或此处的其他人有用:

  • AS3WebSocket:Flash应用程序的WebSockets客户端库。
  • web-socket-js:在Flash中为Javascript应用程序实现的WebSocket后备/填充(向具有Flash但不具有本地WebSockets的浏览器添加WebSockets支持)。
  • 关于flash - WebSockets与Flash中的原始TCP套接字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5966316/

    10-11 23:40