什么是HTML5 服务器发送事件(server-sent event)?
概念:HTML5 服务器发送事件(server-sent event)允许网页使用监听器来获得来自服务器的消息,也就是我们可以在网页中接收来自服务器的消息,类似于Socket双工概念,可以由主动请求变被动接收。
特性:
- Server-Sent 事件可以让网页自动获取来自服务器的更新。
- HTML5之前的实现是通过网页对服务器进行轮询(循环进行请求)是否有可用的更新。通过 HTML5服务器发送事件,服务器的消息更新客户端可以自动接收。
- 可以应用的场景:Facebook/Twitter 更新、估价更新、博文更新、赛事结果、股票趋势、天气预报等。
为什么需要HTML5 服务器发送事件(server-sent event)?
我们的Web应用开发是基于HTTP协议,它是一个请求响应协议,客户端向服务器发送一个请求,然后服务器响应这个请求 将相关数据返回到客户端并断开连接,所有的业务逻辑都是基于由客户端进行请求,然后服务器响应。
这样的模式并不适用于全部的业务场景,比如我们要想实现一个天气预报的功能,我们需要通过向服务器请求最新的天气信息,这个时候我们就需要在客户端开启一个定时循环,持续不断的向服务器进行最新天气的获取,这样的业务处理情景会导致如下问题:
- 加重对客户端性能的消耗,需要不断重复的进行请求
- 加重对服务器带宽和性能的消耗,需要不断重复的处理请求
使用 HTML5 服务器发送事件(server-sent event)的功能可以让客户端由主动变为被动,我们不需要重复去向服务器请求获取数据,我们只需要等待服务器向我们发送最新的天气信息即可。