【发布时间】:2010-11-29 19:46:04
【问题描述】:
我从一个相关问题here 中听说了 HTML 文件规范中的 Web 套接字接口。
听起来很有希望!
我不明白它是如何工作的,它仍然使用 HTTP 协议并解决它还是像 TCP 套接字一样工作?
【问题讨论】:
标签: sockets interface html websocket
我从一个相关问题here 中听说了 HTML 文件规范中的 Web 套接字接口。
听起来很有希望!
我不明白它是如何工作的,它仍然使用 HTTP 协议并解决它还是像 TCP 套接字一样工作?
【问题讨论】:
标签: sockets interface html websocket
Web Socket 协议是一个基于 TCP 的协议,但它被设计为降级为 HTTP。还有一个 HTTP 握手请求服务器升级到 Web Sockets 协议。因此,如果服务器支持它,那么将使用双工 TCP 连接,否则使用 HTTP 和 Comet hacks。
【讨论】:
它不是 HTTP,也不是普通的 TCP 套接字。它旨在获得常规套接字连接的低开销(AJAX/COMET 的开销非常高),但不会牺牲过去几年开发的一些浏览器安全原则。
最初的 WebSockets 握手看起来很像 HTTP。这将使现有的 HTTP 代理和 Web 服务器更容易支持传入的 WebSockets 连接并使用它们做正确的事情(即将它们转发到真正的处理程序)。但在成功握手后(包括交换和验证原始信息),连接保持打开状态并变为双向。
每个数据包(无论是从服务器发送还是从客户端发送)都以“\x00”(零字节)开头,后跟 UTF-8 编码数据,并以“\xff”(全为字节)结尾.
当前的标准草案在这里:https://datatracker.ietf.org/doc/html/draft-hixie-thewebsocketprotocol-76
您还可能会发现 noVNC 中包含的 wsproxy 作为参考很有用。 wsproxy 是一个通用的 WebSockets 到 TCP 套接字代理。 noVNC 包含 C 和 python 版本的 wsproxy。
【讨论】:
在某种程度上,它既是一个 HTTP 请求,也是一个普通的 TCP 套接字。
通过 TCP 使用普通 HTTP 请求请求 websocket 连接。 发送的一些标头向 web 服务器表明正在请求的是 websocket 而不是普通页面,但从根本上说这只是一个 HTTP 请求。
从服务器发送响应后,升级连接。也就是说,用于 HTTP 的 TCP 连接被劫持以进行更高级别的调用:双向实时数据传输。
一旦你具备双向高效沟通的能力(这是战胜彗星的主要胜利),开发人员的视野就会大大增加。突然之间,仅使用网络技术无法实现的 MMO 游戏和实时协作之类的事情变得可能。
【讨论】:
在这种情况下,服务器的角色就来了:
在 HTML 5 中,WebSocket 类似于 fone(2 路通信)而不是步话机。
HTTP 协议升级为 websocket 协议。(wss:// from ws://) SERVER 应该能够打开双工通道,因此同意双工通信。
也请通过此链接:
http://www.html5rocks.com/en/tutorials/websockets/basics/
谢谢。
【讨论】: