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

时间:2009-09-20 02:18:07

标签: sockets interface html5 websocket

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

4 个答案:

答案 0 :(得分:23)

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

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

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

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

答案 1 :(得分: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/

答案 2 :(得分:2)

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

答案 3 :(得分:0)

在这种情况下,服务器的角色来自:

在HTML 5中,WebSocket就像一个fone(2-way comm。)而不是walky-talky。 HTTP协议升级到websocket协议。(wss:// from ws://) SERVER应该能够打开双工通道,因此可以通过双工通信进行AGREE。 请同时浏览此链接: http://www.html5rocks.com/en/tutorials/websockets/basics/

感谢。