SSE(Server-Sent Events)
SSE,基于事件流的服务端推送,是HTML5的新特性,除开IE/Edge的主流浏览器都支持。它允许客户端与服务端建立连接后,服务端单方面向客户端推送实时消息。是基于HTTP的长连接实现的。
特性
- 建立连接后,只能服务端向客户端推送消息
- 基于HTTP长连接,消息都是从同一个TCP返回
- 实时性,服务端向客户端推送客户端需要的,或者服务端想推送的消息
关键
- 前端通过EventSource或者fetch发起请求
- fetch时需要指定
Accept:text/event-stream
- 通过
onmessage
拿到流数据
- fetch时需要指定
- 请求是GET请求
- 服务端返回
Content-Type:text/event-stream
- 数据格式
// id: 当前消息的 id
// event: 当前消息的类型,根据业务需要自行定义。新闻:news
// data - 这条消息的内容,只能为文本类型 —— 也可以是JSON字符串或者自定义的字符串格式
// retry - 值必须是数字 —— 如果连接中断,客户端应该间隔多少毫秒再尝试重新连接