sse请求AI应用
- SSE 是一种单向流式通信:服务端 → 客户端(单向)
- SSE请求只支持GET请求,不支持:
POST、PUT、DELETE等 - SSE 如何实现双向通信:SSE 负责服务器→客户端推送,客户端→服务器通过普通 HTTP POST 请求
- AI 聊天选 SSE 的原因:AI 输出是单向流(服务器→客户端),SSE 足够且更简单;基于 HTTP 无需额外协议支持;内置重连机制保证稳定性
SSE 模拟双向通信
- SSE 下行 + 普通 HTTP 上行
- 下行:服务端 -> 客户端:SSE 持续推送
- 上行:客户端 -> 服务端:
fetch/POST单独发请求
客户端
├─ EventSource("/sse") // 接收服务端消息
└─ fetch("/send", ...) // 给服务端发消息
服务端
├─ /sse 持续返回 text/event-stream
└─ /send 接收客户端消息,再转发到对应 SSE 连接
缺点:
- 不适合高频通信
Streamable HTTP
| 对比项 | SSE | Streamable HTTP |
|---|---|---|
| 本质 | 一种事件流格式 | 一种HTTP 传输模式 |
| 响应类型 | 固定 text/event-stream | 可以是普通 JSON,也可以是 SSE 流 |
| 请求方式 | 浏览器原生通常只适合 GET | 常见支持 POST + GET |
| 灵活性 | 偏单一 | 更灵活 |
| 在 MCP 中的位置 | 旧的远程传输方案 | 新的默认传输方案 |
Streamable替代SSE
- Streamable HTTP可以实现SSE的流式响应返回
- 比SSE更灵活,响应类型支持JSON、流式响应,请求方式支持POST和GET