第17章 WebSocket


17.1 WebSocket概要

17.1.1 WebSocket 的定义

WebSocket 是一种用于在服务器与客户端之间实现高效的双向通信的机制。最近,在Gmail 这类重视数据实时性的 Web 应用程序中常常会使用 WebSocket,这种技术因此广受瞩目。如今 JavaScript 的处理性能已经得到了大幅改善,Web 应用程序的性能瓶颈已经转移到了网络通信部分。

WebSocket 的 API 组成非常简单。通过 WebSocket,就能够在 1 个 HTTP 连接上自由地双向收发消息。与通过结合使用 XMLHttpRequest 与 Server-sent Events 而实现的双向通信相比,这种方式具有通信效率更高、设计与实现容易等优点。

17.1.2 2 现有的通信技术

XMLHttpRequest

在 XHR(XMLHttpRequest)出现之后,由客户端发往服务器方向的异步通信得以实现。准确地说,在更早之前我们就能够通过 iframe 及 img 等方式来强行实现异步通信了,不过在 XMLHttpRequest 确立了其标准的通信手段的地位之后,Web 应用程序的异步通信领域的技术才得到了飞跃性的进步。

但是,XHR 有一个很大的问题,它无法跨源通信。为了实现跨源通信而出现了 JSONP 等技巧性较强的方法,且至今仍被广泛使用。现在 W3C 为了能通过一种规范的方式来解决跨源通信的问题,正在对XMLHttpRequest Level 2 的标准进行讨论。

XHR 技术是在过去不具备状态的通信技术的基础上设计的。与 WebSocket 相比,在通过 XHR 进行通信时必须添加请求头部,因此即使只发送 1 个字节的信息,也需要同时发出数 KB 的多余的信息。在诸如聊天等希望每输入 1 个字符便向服务器发送信息时,如果程序很重视其实时性,就可能因此发生性能下降。

Server-Sent Events

由服务器发往客户端方向的通信(推送通信)领域中,在很长一段时间内都没有一种能够被称为标准技术的基本技术,因此,一些强行使用了大量技巧性较强的手段得到了广泛运用。如今,W3C 为了能够以一种优雅的方式来实现来自服务器的推送通信,正在对 Server-Sent Events的标准进行讨论。

17.2 基本操作

17.3 WebSocket实践

相关