Streamable HTTP
Streamable HTTP是一种基于 HTTP 的流式传输机制它允许客户端和服务器之间通过 HTTP 连接持续交换数据而不是像传统 HTTP 请求那样“一问一答”。它最常出现在现代 AI Agent、实时 API、消息推送等场景中。简单理解普通 HTTP客户端发一个请求服务器返回一个完整响应。Streamable HTTP客户端发一个请求服务器可以边生成边返回数据客户端也可以持续发送或接收数据。1. 传统 HTTP 是什么样例如客户端GET /user/100服务器HTTP/1.1 200 OK { id:100, name:Tom }流程Client ---- request ---- Server Client --- response ---- Server请求结束连接通常结束。2. Streamable HTTP 是什么样例如 AI 对话你问请写一个Java程序服务器生成答案可能需要 10 秒。传统 HTTP请求 | | 等待10秒 | 返回完整答案用户体验[等待........] [完整文字一次出现]Streamable HTTP请求 | 服务器开始生成 | 返回: public class | 返回: HelloWorld { | 返回: public static void main | 返回: }类似 ChatGPT 输出文字public class HelloWorld { public static void main(String[] args) { System.out.println(Hello); } }是一点一点出现的。3. Streamable HTTP 和普通 HTTP 的区别传统HTTPStreamable HTTP响应方式一次性返回持续返回数据大小适合小数据适合大量数据延迟高低连接短连接为主长连接服务器主动推送困难容易典型场景网页APIAI、实时数据4. Streamable HTTP 常见实现方式方式1Chunked Transfer EncodingHTTP/1.1 支持Transfer-Encoding: chunked服务器HTTP/1.1 200 OK Transfer-Encoding: chunked 5 hello 6 world数据分块发送。方式2SSEServer-Sent Events现在很多 AI API 使用Content-Type: text/event-stream服务器data: Hello data: world data: !特点单向Server → Client基于 HTTP浏览器支持很好例如浏览器 | | HTTP Request | 服务器 | | data: token1 | data: token2 | data: token3方式3HTTP Streaming服务器保持连接Client | | GET /stream | Server 持续发送: message1 message2 message35. Streamable HTTP 和 WebSocket 的区别很多人会疑惑“那它和 WebSocket 有什么区别”确实很像。WebSocket建立HTTP Upgrade HTTP | | upgrade ↓ WebSocket之后Client Server 双向实时通信双方都可以随时发送。例如聊天软件游戏股票行情Streamable HTTP还是 HTTPClient | | HTTP Request | Server | | Streaming Response | Client主要特点兼容 HTTP 基础设施更容易穿过防火墙更适合 API简单比较Streamable HTTPWebSocket协议HTTPWebSocket方向通常服务器流式返回双向复杂度低高浏览器支持很好很好代理兼容好稍差实时性较好最好6. 在 AI 场景中的应用现在大模型 API 大量使用 Streamable HTTP。比如OpenAI API请求POST /v1/chat/completions { stream: true, messages:[ { role:user, content:介绍一下Java } ] }服务器返回data: { delta:Java } data: { delta:是一种 } data: { delta:编程语言 }客户端不断接收。7. 与JSON-RPC 2.0 有什么关系这个联系很有意思。JSON-RPC 2.0 本身只定义“消息格式”例如请求{jsonrpc:2.0,method:add,params:[1,2],id:1}返回{jsonrpc:2.0,result:3,id:1}但是JSON-RPC 不规定传输协议。所以它可以运行在JSON-RPC | --- HTTP | --- WebSocket | --- Streamable HTTP | --- TCP例如MCP(Model Context Protocol) | | JSON-RPC 2.0 | | Streamable HTTP很多 AI Agent 架构就是这样AI Client | | JSON-RPC messages | | Streamable HTTP | ↓ AI Tool Server总结一句Streamable HTTP 在 HTTP 上实现持续数据流传输的一种方式。它让服务器可以边产生数据边发送而不用等待整个结果生成完。它常用于 AI 大模型流式输出、实时通知、日志流、MCP 等现代应用。