浅谈SSE流+HTTP和streamable HTTP
在学MCP协议时MCP在本地通信用stdio协议而在远程通信采用SSE流HTTP。后来由SSE流HTTP升级为Streamable HTTP。我也是临时学习了一下这两者的异同优劣在这里和大家分享浅谈一下。【注】所以无论是SSE流还是Streamable讨论的范围都是传输层transport的事。什么是SSE流Server-Sent Events流可以理解成“数据通道”应该是来自于Bash那边的专业术语。SSE流翻译过来是服务器发送事件可以理解一种端到端的传输协议专门服务于服务端发送数据数据在协议中称为事件events利用HTTP协议进行单向传输传输到客户端。当然服务端是受到客户端的申请请求才会发送数据不会无缘无故的发送数据。异同点SSE流和Streamable 都是用于远程通信都会建立一个长连接都能达到双向通信的效果都可做到流式输出。Streamable HTTP 可以记住数据的会话ID做到断点续传而且Streamable HTTP可以按需分配所以总体上会比SSE流更省资源Streamable是单通道也就是双向通道需要一个端口号单通道有POST和GET两种请求方式。SSE是双通道也就是两个单向通道需要二个端口号一个通道用POST请求方式一个用GET请求方式。Streamable即支持像JSON格式响应的短连接也支持SSE长连接。而SSE就只有长连接。Streamable升级里哪里我前面讲Streamable是SSE流的升级版那升级了哪里这要从SSE的缺点说起。SSE的工作模式是收发分离。假如Server端用POST占据3030端口去仅发送数据我用GET占据3031端口去仅接受请求。那Client端就要也用2个端口去接、发数据。Server端收到Client端的请求采用流式输出的方式发送数据到Client端发送一半突然网络故障。此时传统的SSE流协议是无法恢复中断继续传输。只能重新建立对话重新连接。而Streamable 也是用POST占据3030端口去发送数据它接受数据也是靠3030端口,建立双向通道收发一体。当遇到网络故障是POST也是无法工作了但Streamable HTTP还有个替补GET方式。替补也是用3030端口用GET方式去尝试建立短连接相当于搜救兵来搞清楚状况看看到底是网络故障还是Server端自己不发送数据了。如果是网络故障他就会临时升级为长连接也就是化身24小时工作超长待机的战士直到危机解除为止替代POST发送数据到Client端。这个功能叫断点续传。Streamable可以根据需求自由切换长/短连接方式而SSE它只能长连接即使是短连接的业务它也必须24小时侯着直到整个会话结束。所以说Streamable比SSE更省资源或者说Streamable减少了浪费的资源。SSEHTTP的例子# old_http_sse.py from fastapi import FastAPI from fastapi.responses import StreamingResponse import asyncio app FastAPI() # 通道 1客户端通过 POST 发送消息 app.post(/message) async def send_message(): # 收到消息后服务器无法直接返回结果只能返回一个 202 (Accepted) # 意思是“我收到了结果我会通过 SSE 通道推给你” return {status: Message received, check SSE stream} # 通道 2客户端必须通过 GET 保持一个长连接用来接收服务器的推送 app.get(/sse) async def sse_stream(): async def generate(): while True: # 模拟服务器持续向客户端推送数据 yield fdata: 这是服务器主动推送的消息\n\n await asyncio.sleep(2) return StreamingResponse(generate(), media_typetext/event-stream)Streamable HTTP的例子# streamable_http.py from fastapi import FastAPI, Request from fastapi.responses import StreamingResponse, JSONResponse import asyncio app FastAPI() # 唯一通道所有通信都在这一个端点完成 app.api_route(/mcp, methods[POST, GET]) async def mcp_endpoint(request: Request): # 场景 A客户端发来普通请求服务器直接返回普通 JSON一问一答 if request.method POST: data await request.json() # 服务器判断如果不需要流式输出直接返回普通 HTTP 响应 if data.get(type) simple_query: return JSONResponse({result: 这是普通的同步响应}) # 场景 B客户端发来复杂请求服务器“按需升级”为 SSE 流 elif data.get(type) stream_query: async def generate(): for i in range(3): yield fdata: 流式输出第 {i1} 个Token\n\n await asyncio.sleep(1) return StreamingResponse(generate(), media_typetext/event-stream) # 场景 C客户端主动发 GET 请求建立 SSE 流用于接收服务器主动推送 elif request.method GET: async def generate(): while True: yield fdata: 服务器主动推送通知\n\n await asyncio.sleep(3) return StreamingResponse(generate(), media_typetext/event-stream)

相关新闻

从NXP SD卡到STM32H7 eMMC:一个偶发open失败问题的完整排查记录

从NXP SD卡到STM32H7 eMMC:一个偶发open失败问题的完整排查记录

背景项目从 NXP1052(Cortex-M7) SD Card 平台迁移到 STM32H743(Cortex-M7) eMMC 平台后,出现偶发的 sdcard_open 失败问题。应用层逻辑完全一致,底层从 SD 卡换成了 eMMC,SDMMC 控制器自带内部 …

2026/7/22 6:55:11阅读更多 →
10天极简C++入门:从环境搭建到实战通讯录系统

10天极简C++入门:从环境搭建到实战通讯录系统

1. 项目概述:为什么是C,为什么是10天?如果你点开这篇文章,大概率是想在短时间内,对C这门“古老”又“强大”的编程语言建立一个清晰、可用的认知。在这个Python、JavaScript大行其道的时代,为什么还要学C&a…

2026/7/22 6:55:11阅读更多 →
Windows 11内置安卓子系统WSA性能优化指南

Windows 11内置安卓子系统WSA性能优化指南

1. 为什么需要抛弃第三方安卓模拟器 在Windows上运行安卓应用的需求一直存在,传统解决方案是安装第三方安卓模拟器。但这类工具存在几个明显痛点:首先,它们往往体积庞大(动辄500MB以上),安装后可能占用5-1…

2026/7/22 6:53:11阅读更多 →
DELUGE框架:基于基础模型嵌入的大陆尺度洪水损失预测技术解析

DELUGE框架:基于基础模型嵌入的大陆尺度洪水损失预测技术解析

在深度学习技术快速发展的今天,洪水灾害预测正经历一场深刻的变革。传统的物理模型虽然机理清晰,但在处理大范围、高频率的日尺度洪水损失预测时,往往面临计算成本高、数据需求大、泛化能力有限等挑战。DELUGE 框架的出现,为这一领…

2026/7/22 8:05:18阅读更多 →
深圳一件代发云仓哪家评价高

深圳一件代发云仓哪家评价高

做宠物电商的朋友,你是不是也遇到过这种情况:自己租仓库,月租每平米80-120元,打包人工每单3-4元,猫砂和冻干还得额外买防漏袋,快递重货首重比别人贵1-2元。一年下来,利润全被仓配吞掉了。我调研…

2026/7/22 8:05:18阅读更多 →
AI智能体开发实战:从原理到产业应用

AI智能体开发实战:从原理到产业应用

1. AI智能体为何成为产业变革的核心引擎 三年前我参与过一个电商推荐系统项目,当首次将AI智能体技术引入商品排序算法时,CTR(点击通过率)指标一夜之间提升了27%。这个数字让我深刻意识到,AI智能体正在重塑传统行业的运…

2026/7/22 8:05:18阅读更多 →
技术模型配置全攻略:从环境搭建到生产部署的最佳实践

技术模型配置全攻略:从环境搭建到生产部署的最佳实践

在技术开发领域,我们经常会遇到各种工具和框架的配置问题。一个配置得当的开发环境或模型能够显著提升工作效率,减少不必要的调试时间。本文将围绕如何正确配置技术模型来提升实用工作能力展开讨论,涵盖环境搭建、核心配置、实战案例以及常见…

2026/7/22 8:05:18阅读更多 →
苹果M6芯片前瞻:3nm工艺与性能飞跃解析

苹果M6芯片前瞻:3nm工艺与性能飞跃解析

1. 苹果M系列芯片的进化之路 苹果自研芯片的历程堪称半导体行业的教科书案例。2020年11月,M1芯片的横空出世彻底改变了个人计算设备的性能格局。这款采用5nm制程工艺的SoC(系统级芯片)首次在消费级设备上实现了惊人的能效比,其性能…

2026/7/22 8:05:18阅读更多 →
iOS性能优化:Instruments工具深度解析与实践

iOS性能优化:Instruments工具深度解析与实践

1. iOS性能优化与Instruments工具概述在iOS应用开发中,性能优化是保证用户体验的关键环节。一个响应迟缓、内存占用过高或耗电过快的应用,很容易被用户抛弃。作为苹果官方提供的性能分析工具套件,Instruments能够帮助开发者精准定位性能瓶颈&…

2026/7/22 8:03:18阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →