webSocket 是什么?
WebSocket http://websocket.org/ 是一种网络通信协议. RFC6455 https://tools.ietf.org/html/rfc6455 定义了它的通信标准.
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 协议在 2008 年诞生, 2011 年成为国际标准. 所有浏览器都已经支持了.
它的最大特点就是, 服务器可以主动向客户端推送信息, 客户端也可以主动向服务器发送信息, 是真正的双向平等对话, 属于服务器推送技术的一种.
其他特点包括:
(1) 建立在 TCP 协议之上, 服务器端的实现比较容易.
(2) 与 HTTP 协议有着良好的兼容性. 默认端口也是 80 和 443, 并且握手阶段采用 HTTP 协议, 因此握手时不容易屏蔽, 能通过各种 HTTP 代理服务器.
(3) 数据格式比较轻量, 性能开销小, 通信高效.
(4) 可以发送文本, 也可以发送二进制数据.
(5) 没有同源限制, 客户端可以与任意服务器通信.
(6) 协议标识符是 ws(如果加密, 则为 wss), 服务器网址就是 URL.
WebSocket 如何工作?
Web 浏览器和服务器都必须实现 WebSockets 协议来建立和维护连接. 由于 WebSockets 连接长期存在, 与典型的 HTTP 连接不同, 对服务器有重要的影响.
基于多线程或多进程的服务器无法适用于 WebSockets, 因为它旨在打开连接, 尽可能快地处理请求, 然后关闭连接. 任何实际的 WebSockets 服务器端实现都需要一个异步服务器.
websocket 建立连接之后, 后边交互都由 tcp 协议进行交互, 故开发的复杂度会较高. 当然 websocket 通讯, 本身要考虑的事情要比 HTTP 协议的通讯考虑的更多.
所以如果不是有特殊要求 (即 应用不是 "高频率低延迟" 的要求), 需要优先考虑 HTTP 协议是否可以满足.
来源: http://www.bubuko.com/infodetail-2977565.html