WebSocket 简介
Last updated
Last updated
WebSocket 是一种通信协议,它通过 single TCP connection 提供全双工通信通道(channel)。
当前允许 Web 应用程序使用此协议的 API 规范称为 WebSockets。
在 HTML5 规范中,WebSocket 最开始被称为 TCPConnection(作为基于 TCP socket API 占位符
2008 年,经过了一系列讨论,更名为 WebSocket
2009 年,Chrome 4 成为第一个完全支持该标准的浏览器,默认启用 WebSocket
2010 年,WebSocket 协议从 W3C 和 WHATWG 小组转移到了 IETF
2011 年,由 IETF 标准化为 RFC 6455
和 HTTP 一样,WebSocket 也位于 OSI 模型中的第 7 层,并依赖于第 4 层的 TCP。
尽管和 HTTP 协议不同,但 RFC 6455 指出 WebSocket 被设计为工作在 HTTP 的端口 443 和 80 上,并且也支持 HTTP 代理和中介,所以 WebSocket 是和 HTTP 兼容的。为了实现这种兼容性,WebSocket 的握手用的是 HTTP Upgrade header,以从 HTTP 协议更改到 WebSocket 协议。
与 HTTP 不同,WebSocket 提供全双工通信。客户端和服务器之间可以进行双向持续对话。
此外,WebSocket 支持 TCP 之上的 message stream(消息流)。TCP 单独处理 byte stream(字节流),没有 message 的固有概念。使用浏览器开发人员工具,开发人员可以检查 WebSocket 握手以及 WebSocket 帧(frames)。
服务器端
2013 年,Nginx 1.3.13 支持 WebSocket,包括充当 WebSocket 应用程序的反向代理和负载均衡器
2013 年 7 月,Apache HTTP Server 2.4.5 支持 WebSocket
IIS 在随 Windows Server 2012 一起发布的版本 8 中添加了对 WebSockets 的支持
2017 年,lighttpd 1.4.46 支持 WebSockets