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

📅 2026/6/30 14:25:12
SSE(Server-Sent Events,服务器推送事件)
SSEServer-Sent Events服务器推送事件是一种让服务器能主动向客户端比如浏览器推送实时数据的技术。它的工作原理很简单单向通道客户端向服务器发起一个 HTTP 连接之后服务器就能通过这个连接单向、持续地向客户端发送新消息。纯文本协议传输的数据必须是text/plain或text/event-stream格式非常简单。自动重连如果连接意外断开浏览器内置的EventSourceAPI 会自动尝试重连无需手动写代码处理。它是如何工作的客户端使用EventSource对象连接到一个特定的 URLconstevtSourcenewEventSource(/api/events);服务器收到请求后会保持连接不关闭并设置Content-Type: text/event-stream。然后每当有新数据服务器就以特定格式写入响应流data: 这是一条实时消息\n\n客户端通过监听message事件就能收到evtSource.onmessagefunction(event){console.log(收到数据:,event.data);};SSE 和 WebSocket 的主要区别两者都能做实时通信但侧重不同方向SSE 是单向的服务器 - 客户端WebSocket 是全双工的双向通信。协议SSE 基于普通 HTTP天然适配现有基础设施WebSocket 是独立协议需要服务器专门支持。实现SSE 实现更轻量浏览器原生支持服务端只需按格式输出文本即可WebSocket 通常需要额外库。断线重连SSE 自动内置WebSocket 需要自己写逻辑处理。什么时候用 SSE它特别适合不需要客户端频繁发数据但需要服务器实时推送的场景例如AI 对话的流式输出比如 ChatGPT 逐字回复股票行情、比赛比分更新社交媒体的新消息通知服务器任务进度的实时反馈简单来说如果你的实时需求主要是让服务器“广播”更新SSE 比 WebSocket 更简单、更高效。