SSE(Server-Sent Events,服务器发送事件)

164 阅读1分钟

SSE(Server-Sent Events,服务器发送事件)是一种由服务器向客户端推送实时更新数据的技术。与传统的 HTTP 请求-响应模型不同,在 SSE 中,客户端向服务器发送一个请求后,服务器保持该连接,并持续不断地向客户端推送数据更新,而无需客户端反复轮询服务器。

SSE 的特点:

1.单向通信:在 SSE 中,数据流仅从服务器推送到客户端,客户端不会向服务器发送数据(除了最初的请求)。

2.持续连接:SSE 使用 HTTP 持续连接,服务器可以随时向客户端发送数据更新,而客户端也可以随时接收这些更新。

3.文本数据格式:SSE 传输的数据格式是简单的文本,每条消息以文本形式发送,并以换行符分隔。通常,消息以 data: 开头,后跟实际的数据内容。

4.浏览器支持:SSE 是一种原生支持的浏览器技术,主要通过 JavaScript 的 EventSource 接口来接收服务器推送的事件。大多数现代浏览器都支持 SSE。

SSE 的应用场景:

SSE 常用于需要实时更新的应用场景,例如:

股票行情:实时更新股票价格。

新闻推送:推送最新的新闻或通知。

在线聊天:实时接收新消息。

服务器监控:实时显示服务器状态或日志。

SSE 的数据格式:

data: 这是一条消息
data: 这是另一条消息

event: customEvent
data: 自定义事件的数据

retry: 10000

SSE 的例子:

const eventSource = new EventSource('<https://example.com/sse>');

eventSource.onmessage = function(event) {
    console.log('Received data:', event.data);
};

eventSource.addEventListener('customEvent', function(event) {
    console.log('Received custom event:', event.data);
});