其他 SSE 前言 随着 ChatGPT 的流行,SSE(Server Send Event) 这种请求方式也进入大众的视野。 能够发现在接口发出之后,内容是逐渐返回的,一直处于连接状态且不断的有新的内容推送到接口中。 概述 Server-Send Events 为服务器推送事件,简称 SSE,是服务器主动向客户端推送数据的。 是 HTML5 规范中的一员,主要由 HTTP 协议和EventSource对象组成。 这种服务端实时向客户端发送数据的传输方式,其实就是基于 EventStream 的事件流。 SSE 的使用好处 在我们通常需要等待服务端返回数据的过程称为轮询。 技术原理 协议 使用 SSE 来做服务器端向客户端做数据的实时推送,需要将对应的 http 响应头 contentType 设置为 text/event-stream 由于所有的数据都是实时推送的,因此不需要有缓存,Cache-Control 设置为 no-cache SSE 本质还是一个 TCP 连接,且为了保持长时间开启,要将 Connection 设置为 keep-live Content-Type: text/event-stream Cache-Control: no-cache Connection: keep-alive 消息格式 EventStream 为 UTF-8 编码格式的文本或者 Base64 编码和 gzip 压缩的二进制消息。 每一条消息由一行或者多行字段(event、id、retry、data)组成,每行字段为字段名:字段值。 字段以行为单位,每行以\n结尾。以冒号开头的行为注释行,会被浏览器忽略。 每次推送,可由多个消息组成,每个消息之间以空行分隔(即最后一个字段以\n\n结尾)。 上一篇:进程间通信之信号量和信号 下一篇:操作系统之内存管理读书笔记