前端/移动开发面试题更新 2026-08-05

在前端开发中,采用什么方式可以调用支持 SSE 流式响应的后端接口?

前端/移动开发编码实现风险判断技术原理SSE

考察说明

考查对 SSE 流式接口前端调用方式的理解与实现细节。

回答思路

  1. 【回答框架 1】SSE 即 Server-Sent Events,是一种基于 HTTP 的流式传输技术,用于服务器向客户端单向推送数据。前端调用时,可使用内置的 EventSource API,它专门用于订阅 SSE 流。
  2. 【回答框架 2】使用 EventSource 时,首先创建实例,例如 new EventSource('/api/stream'),然后监听默认的 onmessage 事件获取数据,也可通过 addEventListener 监听自定义事件,如服务端通过 event: 字段指定的类型。
  3. 【回答框架 3】需要注意,EventSource 只支持 GET 请求,且无法携带自定义请求头,也无法手动设置请求体。若需发送 POST 或添加认证头,不能直接使用 EventSource,可改用 fetch API 结合 ReadableStream 实现流式读取,手动解析 SSE 格式数据。
  4. 【回答框架 4】当使用 fetch 时,需通过 response.body.getReader() 获取读取器,循环读取二进制块并解码为文本,按 SSE 格式(以空行分隔事件,字段如 data:)解析出实际数据。
  5. 【回答框架 5】连接建立后,需监听 onopen 事件进行初始化处理,监听 onerror 处理连接中断与自动重连(EventSource 内置重连机制,可自定义重连策略)。在无需接收时,应调用 close() 方法关闭连接,避免资源泄漏。
  6. 【关键点 1】EventSource API 是前端实现 SSE 最直接的方式,支持自动重连但只支持 GET。
  7. 【关键点 2】为实现 POST 或自定义请求头,须用 fetch 结合流式读取手动解析 SSE 数据。
  8. 【关键点 3】SSE 是单向的,仅支持服务器向客户端推送,与 WebSocket 的双向通信有本质区别。
  9. 【易错点 1】误以为 EventSource 支持 POST 请求,实际它只允许 GET,且无法自定义请求头。
  10. 【易错点 2】忽略 SSE 事件的格式解析,直接按整段文本处理容易遗漏数据;须正确按空行分隔事件并提取 data 字段。
  11. 【易错点 3】忘记处理连接异常和相关清理,比如未调用 close() 导致请求持续占用资源,或者组件卸载时未关闭连接引起内存泄漏。