一次HTTP请求,如何将内容拆分,多次推送到客户端
这个需求WebSocket也能实现,但今天介绍另一种方案: Server-Sent Events
Server-Sent Events(SSE)是一种在Web浏览器和Web服务器之间启用单向、实时通信的技术。它允许服务器发送异步事件流到客户端的Web浏览器,以便实时更新Web页面中的内容,而不需要客户端不断地轮询服务器以获取最新的信息。 SSE是一种基于HTTP协议以及HTML5的浏览器API的技术。与类似的Ajax和WebSocket不同,SSE是一种完全由浏览器处理的技术,无需使用JavaScript代码轮询服务器,也不需要客户端和服务端之间的全双工通信。 使用SSE,服务器会保持一个持久的HTTP连接开放,通过这个连接向客户端发送事件信息。这些事件可以是JSON、XML或简单文本等多种数据格式。一旦客户端建立了连接,事件流将由浏览器自动处理,并可在JavaScript中进行监听和处理。 SSE通常用于实时更新网页内容,如推送新闻、股市报价、即时通讯应用等场景。 客户端示例
当使用Server-Sent Events时,客户端(即浏览器)会向服务器发送一个长时间的HTTP请求,以相同的方式发送一个HTTP响应。以下是一个基本的JavaScript代码示例,演示如何使用SSE与服务器通信并接收事件流:
服务端
以下是一个基本的Node.js后端代码示例,用于处理HTTP请求并返回响应: