一、什么是SSE?
Server-Sent Events,简称SSE.基于HTTP协议,支持单向通信,以文本流式信息的形式实现从服务端向浏览器推送消息。SSE并不是新兴的技术,早已经被HTML5纳入标准。
SSE连接本质是由客户端发送一个请求头accept: text/event-stream的http长连接请求,服务端连接建立,并响应Content-Type: text/event-stream。

SSE协议Client/Server交互流程图

二、消息传输格式
格式:[field]: content\n
一个message可以有多个field,每个message最后用\n分割 field字段有下列选项
field字段类型
1 | event: 事件类型 |
三、简易SSE服务端
1 |
|
四、客户端连接SSE服务
在浏览器中,我们可以通过Javascript Api的EventSource对象连接SSE服务。而在非浏览器的环境,我们需要建立http长连接,流式读取数据即可。
withCredentials 在跨域请求时,携带cookie等凭证信息
1 | var es = new EventSource('http://localhost:8888', { withCredentials: true }) |
五、参考链接
- https://html.spec.whatwg.org/multipage/server-sent-events.html
- https://www.ruanyifeng.com/blog/2017/05/server-sent_events.html
- 本文作者: 暮秋人
- 本文链接: https://muqiuren.pages.dev/2021/08/how-to-use-server-sent-events/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!