两种服务端推送技术的简单对比:
SSE | WebSocket |
---|---|
服务器到浏览器的单向通信 | 两端之间的双向实时通信 |
不兼容IE | 兼容性更好 |
协议实现断线重连与消息追踪 | 不在协议范围内, 需要手动处理 |
实现简单, 复用HTTP | 独立于Http, 实现较复杂 |
回到问题, 在客户端请求不影响服务端推送数据或客户端请求以及客户端请求不密集的情况下可以考虑使用SSE代替WebSocket.
具体的应用场景有:
Server-Send事件 Server-Send事件指的是网页 自动获取来自服务器端的更新。以前也能做到这点,前提是网页必须询问是否有可用的更新。通过服务器发送事件,更新能够自动送达。 支持情况:除了IE浏览器外,其它主流浏览器匀支持服务器发送事件。 检测Server-Send的支持情况 在书写代码时,首先是 检测浏览器是否支持Server-Send,代码如下: if (typeof(Event
HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。 Server-Sent 事件 - 单向消息传递 Server-Sent 事件指的是网页自动获取来自服务器的更新。 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。通过服务器发送事件,更新能够自动到达。 例子:Facebook/Twitter 更新、估价更新、新的博文、赛事结果等。 浏览器支持
http://www.html5rocks.com/en/tutorials/eventsource/basics/ 但是,我不明白一个重要的概念--是什么触发了服务器上导致消息发送的事件? 换句话说--在HTML5示例中--服务器只发送一次时间戳: 如果我建立一个实际的例子--例如,一个Facebook风格的“墙”或一个股票报价器,在这个例子中,每当某个数据发生变化时,服务器就会向客户机“推送”
传统的Web应用程序生成分派给Web服务器的事件。 例如,只需单击链接就可以从服务器请求新页面。 从Web浏览器流向Web服务器的事件类型可以称为客户端发送的事件。 与HTML5一起, WHATWG Web Applications 1.0引入了从Web服务器流向Web浏览器的事件,它们被称为服务器发送事件(SSE)。 使用SSE,您可以将DOM事件从Web服务器连续推送到访问者的浏览器。 事件流
服务器已发送事件 它从服务器获取更新并在Web浏览器上显示结果。在从服务器获取更新之前,浏览器必须询问,如果Web服务器中有任何更新。 例子 (Example) HTML5代码应如下所示 <html> <body> <h1> Server updates</h1> <div id="result"></div> <script> if(t
我无法理解HTML5s服务器发送的事件是否真的适合ReST体系结构。我知道并非HTML5/HTTP的所有方面都需要适合ReST架构。但我想从专家那里知道HTTP的哪一半是SSE(ReSTful的一半还是另一半!)。 一种观点是它是ReSTful的,因为客户端向服务器发出了一个“初始”HTTP GET请求,其余的只能看作是不同内容类型的部分内容响应(“文本/事件流”) 发送的请求不知道有多少响应将作