项目中 SSE 推送什么数据,采用什么格式?

考查重点:进度事件与任务结果关联。按任务推节点进度、文本片段和完成/错误事件,定义 event/id/data 与结构字段,结果用稳定任务标识关联

本题目录

参考答案

核心回答

问数接口通过 SSE 推送节点进度、最终查询结果和错误信息,既能展示处理过程,也能承载结构化结果。现有教程用每条事件的 data 承载一个 JSON 对象,通过 type=progress/result/error 区分业务消息。

事件格式和业务字段应分层约定:event 表示可选的事件类型,id 表示可选的恢复序号,data 才是业务内容。任务标识应在请求和消息之间保持一致;事件序号与任务标识各有用途,不能互相替代。

用一条请求讲清数据格式

下面是可扩展的协议示例,taskId、seq 和恢复能力需要业务系统另行实现:

id: task-42:3
event: progress
data: {"taskId":"task-42","seq":3,"type":"progress","step":"生成SQL","status":"running"}

id: task-42:4
event: result
data: {"taskId":"task-42","seq":4,"type":"result","resultUrl":"/tasks/task-42/result"}

进度说明“当前在做什么”,结果说明“完成了什么”。结果较大时,推送结果摘要和可查询地址,避免长连接一次携带大量明细。错误事件提供稳定错误码、用户可理解的信息和是否可以重试,详细堆栈留在服务端日志。

实际项目里还要说清什么

教程中的查询接口由当前请求驱动图执行,按 progress/result/error 返回事件。若要在断线后继续订阅,需要另外保存任务状态与事件日志,根据恢复游标补发,并由客户端处理重复事件。

心跳与业务进度分开:心跳只说明连接仍有数据经过,不代表检索或模型任务有进展。节点开始、结束和失败事件应带上同一任务的关联标识,才能把前端展示与后端排障连起来。

对应教程

参考资料

相关面经

4 篇

字节跳动

Agent 开发工程师
一面
查看原面经 →
项目追问
SSE 在项目里用来做什么?推送的数据格式是什么样?

字节跳动

全栈开发工程师(Agent)
一面
查看原面经 →
试用协议是SSE吗?

字节跳动

后端开发工程师(AI / Agent 方向)
实习二面
查看原面经 →
SSE 是干嘛用的?

公司未注明

Agent
查看原面经 →
你做的步骤级 SSE 推送,和普通 Token 流式输出有什么本质差异?

收录题集

1 个来源,共2 份题集

相关题目

4 题