LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

SSE vs WebSocket:为什么SSE突然就火了?

admin
2026年5月29日 18:30 本文热度 56

在这一行干了十几年,经历过好几波技术浪潮。要说近几年后端架构领域最值得关注的一个趋势,不是什么新语言、新框架,而是一个特别不起眼的变化——SSE(Server-Sent Events)正在悄悄吃掉 WebSocket 的大量场景。

你可能会说:SSE?那不是 2006 年就有东西吗?当年 IE 都支持的玩意儿,怎么突然又火了?

别急,听我从实际项目经验的角度,把这事儿给你讲透。

架构选型的本质:别拿着锤子找钉子

先说一个我踩过的大坑。

几年前做一个实时通知系统,需求很简单:服务端有新消息就推给前端。我当时二话不说选了 WebSocket——毕竟"实时"两个字就等于 WebSocket,对吧?

结果呢?上线之后噩梦才开始

👉 Nginx 反向代理得专门配 WebSocket 超时和 Upgrade 头

👉 K8s Ingress 要改 annotation,不然连接几秒就断

👉 客户断线重连自己写了一堆,还总有 bug

👉 某企业客户部署时,防火墙直接把 ws:// 给拦了

👉 云厂商的 SLB 不支持 WebSocket 长连接,被迫换方案

折腾了大半个月,最后回头看——我们的业务压根不需要双向通信。客户端发个 HTTP 请求,服务端推消息回来,仅此而已。完全是用大炮打蚊子。

架构选型最忌讳的就是"用最熟的技术去套所有场景"。先搞清楚需求,再选工具。

先搞清楚:它俩本质上是两种通信模型

很多人把 WebSocket 和 SSE 放在一起比,好像它们是竞争对手。其实根本不是——它们解决的是完全不同维度的问题

WebSocket = 全双工电话线 📞

建立连接后,双方可以随时互发消息。客户端能主动发,服务端也能主动推。就像打电话——两边都能说话。

底层走的是独立的 ws:// 协议,通过 HTTP 101 Upgrade 握手升级而成。连接建立后就跟 HTTP 没关系了,是一套全新的帧协议。

SSE = 服务端的广播电台 📻

连接建立后,只有服务端能往客户端推数据。客户端就是个听众,只进不出。就像听广播——电台说啥你听啥,你不能跟电台对话。

底层就是标准的 HTTP 长连接,Content-Type 设成 text/event-stream,服务端持续往 response body 里写数据就行。

核心参数对比

WebSocket
SSE
通信方向
双向 ↕️
单向 ⬇️
底层协议
ws://(独立协议)
HTTP(标准)
断线重连
自己实现
浏览器内置 ✅
代理/CDN/防火墙
容易被拦截
天然兼容 ✅
运维复杂度
极低 ✅
数据格式
文本 + 二进制
仅文本(UTF-8)

为什么近两年 SSE 突然爆发?

这才是本文的重点。SSE 不是突然变强了,而是技术生态变了

原因一:LLM 的流式输出,简直是给 SSE 量身定做的

ChatGPT 的打字机效果,技术上叫 Streaming。大模型生成一个 token 就推一个 token,前端逐字渲染。

你仔细想这个交互模式——用户发一条 prompt(普通 HTTP POST),然后服务端持续单向推回复。这不就是 SSE 的教科书场景吗?

现在几乎所有大模型的 API 都支持 SSE 流式输出:OpenAI、Anthropic、智谱、通义、DeepSeek……这不是巧合,而是因为 SSE 在这个场景下确实是最优解

WebSocket 当然也能做,但你用一个全双工通道来干单工的活,连接管理、心跳维护、状态同步全是白搭的成本。

原因二:开发效率差了十倍

我带团队做过对比。同样的"服务端推送"功能,两种方案的开发周期:

SSE 方案:

// 前端:两行搞定 const source = new EventSource('/api/stream'); source.onmessage = (e) => console.log(e.data); // 后端:设个 header 就行 res.setHeader('Content-Type', 'text/event-stream'); res.write(`data: ${JSON.stringify(msg)}\n\n`);

WebSocket 方案:

// 前端:引入 ws 库、处理连接、心跳、重连、消息解析... // 后端:单独的 WebSocket server、连接池管理、异常处理、集群广播...

SSE 前后端加起来不到20行代码。WebSocket 随便一个完整实现就得几百行,还得处理一堆边界情况。

对于一个需要快速验证的 AI 功能,你选哪个?

原因三:基础设施的兼容性,SSE 完胜

这是很多开发者(尤其是小团队)容易忽略的维度——运维成本

WebSocket 的 ws:// 协议在经过 Nginx、ALB、Cloudflare、企业防火墙时,经常遇到:

• 握手被拦截(代理不认识 Upgrade 头)

• 连接超时断开(默认60s,得专门配)

• SSL 终端不透传 WebSocket 帧

• 部分云厂商的负载均衡不支持 ws 协议

我在上一个项目就踩过:客户是金融机构,他们的网关只允许标准 HTTPS 流量通过。WebSocket 方案直接被否。换成 SSE,零改造上线。

SSE 就是最标准的 HTTP。 任何代理、CDN、防火墙、网关看到的就是一个普通的 HTTP 长连接,不需要任何特殊配置。

原因四:断线重连不用你写

移动端、弱网环境下,连接断开是常态。WebSocket 断了,你得自己实现指数退避重连 + 状态恢复 + 消息补偿。这块代码写不好,要么疯狂重连打爆服务端,要么消息丢失。

SSE 呢?浏览器原生自动重连,还自带 Last-Event-ID 机制,服务端可以根据这个 ID 接着上次的位置继续推送。

一行代码不用写,白送的功能。

原因五:云原生架构天然适配

现在的后端架构:Serverless、API Gateway、Service Mesh、K8s Ingress。这些组件对 HTTP 的理解是一等公民级别的。

SSE 走的是 HTTP,API Gateway 天然支持,Serverless 函数可以直接返回 stream,Ingress 不需要任何特殊配置。

WebSocket 呢?它需要有状态的持久连接。Serverless 函数冷启动的时候连接早断了;K8s Pod 重调度,所有 ws 连接全部丢失;Ingress 得配 sticky session。

在云原生时代,无状态的 HTTP 流比有状态的 ws 连接好运维一个数量级

但 WebSocket 的铁饭碗,SSE 端不动

说了这么多 SSE 的好,不意味着 WebSocket 要被淘汰了。下面这些场景,SSE 根本做不了

🎮 多人实时游戏 — 玩家操作要双向实时同步,延迟要求 ms 级

💬 IM 聊天 — 双方都要随时发消息,还要传图片、文件

📊 协同编辑 — 多人同时改文档,OT/CRTP 算法需要双向实时

📈 金融交易 — 行情推送 + 下单指令,双向都要求极低延迟

🏠 IoT 设备控制 — 传感器上报 + 下发控制指令

这些场景的核心特征是客户端需要频繁、低延迟地主动发消息。SSE 是单向的,要实现这种效果就得 SSE + HTTP POST 组合,架构复杂度反而更高。

所以结论很清晰:需要双向实时通信的场景,WebSocket 依然是唯一解。

架构选型决策树

我总结了这些年做实时系统的选型经验,画了个简单的决策树:

你的业务需要客户端频繁主动发消息吗?

↓ 是

用 WebSocket,没得选

↓ 否(只需要服务端推送)

你的推送需要传二进制数据吗?

↓ 是

用 WebSocket

↓ 否

用 SSE,别犹豫

就这么简单。90% 的"实时推送"场景,走到最后一行都是 SSE。

说几句掏心话

SSE 这两年爆发,不是 WebSocket 不行,而是时代变了

1. LLM 流式输出 — 把 SSE 从冷宫拉了出来
2. 开发效率 — 20行代码 vs 几百行,差距十倍
3. 基础设施兼容性 — 纯 HTTP,到哪都能跑
4. 运维成本 — 不需要特殊配置,不需要特殊照顾
5. 云原生友好 — 无状态 HTTP 流比有状态 ws 连接好运维太多

服务端说、客户端听 → SSE。双方互说 → WebSocket。

别被网上那些"SSE 要取代 WebSocket"的标题党忽悠了。它们不是一个赛道的东西,只是这个时代恰好有更多场景需要单向推送罢了。

好的架构师不是什么都用最新的,而是——在正确的场景选正确的工具。


阅读原文:https://mp.weixin.qq.com/s/GKBf8v85TmncL-WqxYSrcw


该文章在 2026/5/29 18:30:58 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号