header('Content-Type: text/event-stream')
是用于设置HTTP响应头的一行代码。它指定了服务器响应的内容类型为 text/event-stream
,这是用于Server-Sent Events(SSE)的规定内容类型。
底层原理是,当浏览器收到带有 Content-Type: text/event-stream
响应头的HTTP响应时,它会将响应解析为SSE流。SSE允许服务器通过单个HTTP连接将实时事件(event)流式传输到客户端。
SSE的工作原理如下:
- 客户端通过浏览器向服务器发送一个带有SSE特定的请求,通常是使用
EventSource
对象或<source>
元素。 - 服务器收到请求后,将建立一个持久的HTTP连接,保持连接打开,并将
Content-Type
设置为text/event-stream
。 - 服务器通过该连接发送一个或多个事件(event)到客户端。每个事件由一个或多个字段组成,如
event
、data
、id
等。 - 客户端收到事件后,可以根据需要对事件进行处理,例如更新页面内容、执行操作等。
- 连接保持打开,服务器可以随时推送新的事件到客户端,实现实时通信的效果。
Content-Type: text/event-stream
响应头告诉浏览器使用SSE的协议来解析响应,并按照SSE规范处理收到的事件数据。浏览器会将每个事件分解为适当的事件对象,从而能够对其进行处理和展示。
需要注意的是,SSE是一种单向通信协议,只允许服务器向客户端推送数据,而不支持客户端向服务器发送请求。因此,SSE适用于需要服务器主动向客户端推送实时数据的场景,如实时通知、实时数据更新等。