我从相关问题here听说了HTML文件规范中的Web套接字接口
听起来很有希望!
我不明白它是如何工作的它仍然使用HTTP协议并解决它或它是否像TCP套接字一样工作?
答案 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版本。
答案 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/
感谢。