HTML5 Web套接字接口如何工作?

Kev*_*oyd 11 sockets html5 interface websocket

我在这里从相关问题中听说了HTML文件规范中的Web套接字接口.
听起来很有前途!
我不明白它是如何工作的它仍然使用HTTP协议并解决它或它是否像TCP套接字一样工作?

dan*_*rth 23

在某种程度上,它既是HTTP请求又是常规TCP套接字.

使用TCP上的普通HTTP请求请求websocket连接.发送了一些标题,向Web服务器指示它是正在请求的websocket,而不是普通页面,但从根本上说它只是一个HTTP请求.

从服务器发送响应后,将升级连接.也就是说,用于HTTP的TCP连接被劫持以获得更高的调用:双向,实时数据传输.

一旦你具备双向和高效通信的能力(这是对彗星的主要胜利),开发人员的视野就会大大增加.突然之间,MMO游戏和实时协作之类的东西变得可能,这些东西只能通过网络技术实现.


kan*_*aka 7

它不是HTTP,也不是普通的TCP套接字.它旨在获得常规套接字连接的低开销(AJAX/COMET是非常高的开销),但不会牺牲过去几年开发的一些浏览器安全原则.

初始WebSockets握手看起来很像HTTP.这将使现有的HTTP代理和Web服务器更容易支持传入的WebSockets连接并使用它们做正确的事情(即将它们转发到真正的处理程序).但是在成功握手(包括交换和验证原始信息)之后,连接保持打开并变为双向.

每个数据包(无论是从服务器还是从客户端发送)都以'\ x00'(零字节)开头,后跟UTF-8编码数据,以'\ xff'结尾(全1字节).

目前的标准草案如下:http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76

您还可能会发现noVNC中包含的wsproxy可用作参考.wsproxy是TCP套接字代理的通用WebSockets.noVNC附带了wsproxy的C和python版本.

http://github.com/kanaka/noVNC/tree/master/utils/


mic*_*elg 2

Web Socket 协议是基于 TCP 的协议,但其设计目的是降级为 HTTP。还有一个 HTTP 握手,要求服务器升级到 Web Sockets 协议。因此,如果服务器支持它,则将使用双工 TCP 连接,否则将诉诸 HTTP 和 Comet hacks。