docs
Sse

Server-Sent Events (opens in a new tab)

Server-Sent Events (SSE) 是一种使服务器能够向客户端推送实时事件的技术。这种技术基于 HTTP 协议,服务器可以在一个打开的连接中发送新数据,而不需要客户端重新请求。这对于需要实时数据更新的应用(例如实时新闻更新,股票价格更新等)非常有用

查看 DEMO

  1. Why Streaming (opens in a new tab): Vercel 的文章很详细的介绍了什么是 Streaming。

几个相似技术的总结

TechnologyDescription
Server-Sent Events (SSE)基于 HTTP 的技术,允许服务器在一个持久的连接中向客户端推送实时事件。
HTTP Chunked TransferHTTP 协议的一部分,允许服务器在不知道整个响应大小的情况下开始发送响应,将响应分块逐个发送。
HTTP/2 Server PushHTTP/2 协议的功能,允许服务器在客户端请求某些资源之前就主动发送这些资源,以提高页面加载性能。
HTTP Streaming一种让服务器能够连续地发送数据到客户端的技术,客户端发送一次请求,然后服务器保持响应开放,并持续发送数据。

相关 npm 包

  1. sse.js (opens in a new tab)

  2. Fetch Event Source (opens in a new tab): 增强 sse,支持错误重试,可以 post 数据。 GitHub starslast commitnpm downloads

    • 注: onmessage 中需要 try catch 逻辑,不然会触发 retry 逻辑。
  3. eventsource (opens in a new tab): 基础的 polyfill GitHub starslast commitnpm downloads

相关文章

  1. ChatGPT 的打字回复效果,原理是什么?我带你们实现! (opens in a new tab)

遇到的问题

  1. Server-Sent Events don't work in Next API routes (opens in a new tab)
  2. sse 在中断后会重新轮训:解决办法,在收到结束事件后,主动关闭请求。
  3. 【踩坑】sse 的消息需要以 data: 开头才可以。 不然客户端接收不到消息。