当前位置: 首页 > news >正文

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 常见实现方式

方式1:Chunked Transfer Encoding

HTTP/1.1 支持:

Transfer-Encoding: chunked

服务器:

HTTP/1.1 200 OK Transfer-Encoding: chunked 5 hello 6 world

数据分块发送。


方式2:SSE(Server-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

方式3:HTTP Streaming

服务器保持连接:

Client | | GET /stream | Server 持续发送: message1 message2 message3


5. Streamable HTTP 和 WebSocket 的区别

很多人会疑惑:

“那它和 WebSocket 有什么区别?”

确实很像。

WebSocket

建立:

HTTP Upgrade HTTP | | upgrade ↓ WebSocket

之后:

Client <===========> Server 双向实时通信

双方都可以随时发送。

例如:

  • 聊天软件
  • 游戏
  • 股票行情

Streamable HTTP

还是 HTTP:

Client | | 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 等现代应用。

http://www.jsqmd.com/news/1146070/

相关文章:

  • Kaggle心血管疾病数据集实战:5种算法对比与投票法融合,准确率提升3%
  • 还在手写YAML?这几款 Docker Compose 管理面板让你效率翻倍!
  • claude code 基础指令积累
  • Sticky便签工具:如何在Linux桌面上优雅管理你的碎片化信息?
  • 小波纹理特征提取 MATLAB 程序
  • 欧洲消暑品类跨境爆单复盘:Temu卖家高效铺货实操方案
  • Claude 3.5 Sonnet vs GPT-4o 多模态能力对比:5项真实任务实测与成本分析
  • 【零基础搭建】 OpenClaw 小龙虾,打造可自主操作电脑的数字助手(含安装包)
  • 2026小红书去水印方法教程:官方无水印保存与安全免费工具
  • 基因表达载体的构建伯远生物
  • 本地AI开发第0步:Node.js环境搭建与nvm版本管理实战
  • MoneyPrinterTurbo:从零到一的AI短视频自动化生成实践
  • 145、EIoU 到 SIoU 的替换对比:角度惩罚对旋转和倾斜目标的增益分析
  • AI风口来袭:小白程序员如何精准定位,稳入大模型赛道?速收藏!
  • 广州增城标识标牌生产制造商哪家好
  • 170、多 Agent 协作系统:AutoGen、CrewAI 的原理、角色分工与通信协议
  • 强化学习生成机器人演示数据:从仿真到实机的高质量轨迹构建方法
  • 几何感知控制屏障函数:伯恩斯坦SDF实现毫秒级碰撞规避
  • 从曝光、触达到留存:现代企业必备的全链路商务营销工具
  • 为什么信奥赛学霸做题那么快?不是智商高,而是他们的大脑里,存放的方法更多!
  • 2026微博去水印方法官方合规教程:图片视频工具实操与侵权风险说明
  • QRazyBox终极指南:3步修复任何损坏的二维码,免费开源工具让你轻松恢复数据
  • 数据质量监控规则怎么配?一条完整规则从定义到告警
  • 三步搞定游戏语言障碍:LunaTranslator零基础入门指南
  • 三步骤在Linux上安装Photoshop CC 2022:告别专业软件缺失的困扰 [特殊字符]
  • 多模态对齐技术解析:从显式DTW到隐式注意力,3种方法解决模态语义鸿沟
  • 从业20年,我这样看2026年水果店收银系统品牌选择
  • FastAPI订单防超卖实战:从数据库锁到Saga分布式事务,这一篇给你理清了
  • RISC-V IDE MRS2调试秘籍(三):通过栈帧可视化模块定位栈溢出、栈内存非法篡改等运行时错误
  • 10-30V直流,每轴1.9A RMS——六轴控制集成度做到这个水平,只需一块TMCM-6214