1. 什么是SSE
SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推送数据的技术,也被称为”事件流”(Event Steam)。
它基于HTTP协议,利用了其长连接特性,在客户端与服务器之间建立一条持久化连接,并通过这条连接实现服务器向客户端的实时数据推送。

2. SSE技术的基本原理
客户端向服务器发送一个请求,带有指定的Header,表示可以接收事件流类型,并禁用任何的事件缓存。
服务器返回一个响应,带有指定的Header,表示事件的媒体类型和编码,以及使用分块传输编码(Chunked)来流式传输动态生成的内容。
服务器在有数据更新时,向客户端发送一个或多个名称:
值字段组成的事件,由单个换行符分隔。
事件之间由两个换行符分隔。
服务器可以发送事件数据、事件类型、事件ID和重试时间等字段。
客户端使用EventSource接口来创建一个对象,打开连接,并订阅onopen、onmessage和onerrror等事件处理程序来处理连接状态和接收信息。
SSE和WebSocket都是实现服务器向客户端实时推送数据的技术,但它们在某些方面还是有一定的区别。
SSE基于HTTP协议,利用了其长连接特性,通过浏览器向服务器发送一个HTTP请求,建立一条持久化的连接。
而WebSocket则是通过特殊的升级协议建立新的TCP连接,与传统HTTP连接不同。
简单说,所谓SSE,就是浏览器向服务器发送一个HTTP请求,然后服务器不断单向地向浏览器推送”信息”(Message)。
这种信息在格式上很简单,就是”信息”加上前缀”data:”,然后以”\n\n”结尾。