Streamable HTTP和Server-Sent Events(SSE)
术语说明可流式传输的 HTTP 请求(描述性说法)SSEServer-Sent Events,是实现流式传输的标准技术SSE 使用的内容类型FluxSpring WebFlux 中表示数据流的类型前端 JS 用来接收 SSE 的 API🎯你现在要记住:“Streamable HTTP” 就是用 SSE 实现的 AI 流式输出。用.call()→ 普通 HTTP(等结果)用.stream()→ S
·
“我们有两种方式获取 AI 回答:一种是等全部生成完再返回(普通 HTTP),一种是流式输出(SSE)。”
✅ 正确术语是:
1. 普通 HTTP(Non-Streaming)
- 一问一答
- 必须等 AI 完全生成完结果,才返回给前端
- 用户体验:卡住几秒,突然弹出全部内容
2. Streamable HTTP(流式 HTTP) → 实际上就是 SSE(Server-Sent Events)
- 服务器一边生成,一边返回
- 前端可以“逐字”或“逐句”看到输出
- 用户体验:像 ChatGPT 一样,文字一行行打出来
✅ 对比:普通 HTTP vs SSE(流式)
| 对比项 | 普通 HTTP | SSE(流式) |
|---|---|---|
| 请求方式 | GET /chat?msg=你好 |
GET /stream?msg=你好 |
| 返回类型 | String |
Flux<String>(响应式流) |
| 内容类型 | text/plain |
text/event-stream |
| 是否等待 | ✅ 等待全部生成完 | ❌ 不等,边生成边返回 |
| 用户体验 | 卡顿,突然显示全部 | 流畅,逐行输出 |
| 适用场景 | 简单问答 | AI 聊天、代码生成 |
✅ Spring AI 中的代码对比
1. 普通 HTTP(非流式)
@GetMapping("/chat")
public String chat(String msg) {
return client.prompt()
.user(msg)
.call() // 等待完整响应
.content(); // 返回完整字符串
}
👉 用户必须等 AI 写完才看到结果。
2. SSE 流式(Streamable HTTP)
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChat(String msg) {
return client.prompt()
.user(msg)
.stream() // 流式调用
.map(response -> response.content()); // 一条条返回
}
👉 服务器每生成一段,就推送给前端一次。
✅ 前端如何接收 SSE?
<script>
const eventSource = new EventSource("/stream?msg=你好");
eventSource.onmessage = function(event) {
const content = event.data; // 每次收到一段
document.body.innerHTML += content + "<br>";
};
</script>
效果:文字像打字机一样一行行出现 ✅
✅ 为什么叫 “Streamable HTTP”?
因为:
- 它还是基于 HTTP 协议
- 但服务器不关闭连接,而是持续发送数据
- 所以叫“可流化的 HTTP 请求”
而 SSE 是它的标准实现方式。
🔗 关系:
Streamable HTTP = 使用 SSE 实现的流式 HTTP 通信
✅ 总结
| 术语 | 说明 |
|---|---|
| Streamable HTTP | 可流式传输的 HTTP 请求(描述性说法) |
| SSE | Server-Sent Events,是实现流式传输的标准技术 |
| text/event-stream | SSE 使用的内容类型 |
| Flux | Spring WebFlux 中表示数据流的类型 |
| EventSource | 前端 JS 用来接收 SSE 的 API |
🎯 你现在要记住:
“Streamable HTTP” 就是用 SSE 实现的 AI 流式输出。
在 Spring AI 中:
- 用
.call()→ 普通 HTTP(等结果) - 用
.stream()→ SSE 流式(实时输出)
这样就搞懂了!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)