什么WebSockets添加到原始TCP连接?
为什么要使用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套接字(这样转换非常容易)。
更新:
几个链接可能对您或此处的其他人有用:
关于flash - WebSockets与Flash中的原始TCP套接字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5966316/