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
   250   251   252   253   254   255   256   257   258   259   260