Page 255 - Web性能权威指南
P. 255
第 1 6 章
服务器发送事件
Server-Sent Events(SSE)让服务器可以向客户端流式发送文本消息,比如服务器
上生成的实时通知或更新。为达到这个目标,SSE 设计了两个组件:浏览器中的
EventSource 和新的“事件流”数据格式。其中,EventSource 可以让客户端以 DOM
事件的形式接收到服务器推送的通知,而新数据格式则用于交付每一次更新。
EventSource API 和定义完善的事件流数据格式,使得 SSE 成为了在浏览器中处理实
时数据的高效而不可或缺的工具:
• 通过一个长连接低延迟交付;
• 高效的浏览器消息解析,不会出现无限缓冲;
• 自动跟踪最后看到的消息及自动重新连接;
• 消息通知在客户端以 DOM 事件形式呈现。
实际上,SSE 提供的是一个高效、跨浏览器的 XHR 流实现,消息交付只使用一个
长 HTTP 连接。然而,与我们自己实现 XHR 流不同,浏览器会帮我们管理连接、
解析消息,从而让我们只关注业务逻辑。一句话,SSE 让处理实时数据变得简单高
效!接下来我们就揭开它神秘的面纱一探究竟。
16.1 EventSource API
EventSource 接口通过一个简单的浏览器 API 隐藏了所有的底层细节,包括建立连接
和解析消息。要使用它,只需指定 SSE 事件流资源的 URL,并在该对象上注册相应
243