四种实时通信技术
这篇文章,我们聊聊 四种实时通信技术:短轮询、长轮询、WebSocket 和 SSE 。
1 短轮询
浏览器 定时(如每秒)向服务器发送 HTTP 请求,服务器立即返回当前数据(无论是否有更新)。
- 优点:实现简单,兼容性极佳
- 缺点:高频请求浪费资源,实时性差(依赖轮询间隔)
- 延迟:高(取决于轮询频率)
- 适用场景:兼容性要求高,延迟不敏感的简单场景。
笔者职业生涯印象最深刻的短轮询应用场景是比分直播:
如图所示,用户进入比分直播界面,浏览器定时查询赛事信息(比分变动、黄红牌等),假如数据有变化,则重新渲染页面。
这种方式实现起来非常简单可靠,但是频繁的调用后端接口,会对后端性能会有影响(主要是 CPU)。同时,因为依赖轮询间隔,页面数据变化有延迟,用户体验并不算太好。
2 长轮询
浏览器发送 HTTP 请求后,服务器 挂起连接 直到数据更新或超时,返回响应后浏览器立即发起新请求。
- 优点:减少无效请求,比短轮询实时性更好
- 缺点:服务器需维护挂起连接,高并发时资源消耗大
- 延迟:中(取决于数据更新频率)
- 适用场景:需要较好实时性且无法用 WebSocket/SSE 的场景(如消息通知)
长轮询最常见的应用场景是:配置中心,我们耳熟能详的注册中心 Nacos 、阿波罗都是依赖长轮询机制。
客户端发起请求后,Nacos 服务端不会立即返回请求结果,而是将请求挂起等待一段时间,如果此段时间内服务端数据变更,立即响应客户端请求,若是一直无变化则等到指定的超时时间后响应请求,客户端重新发起长链接。
3 WebSocket
基于 TCP 的全双工协议,通过 HTTP 升级握手(Upgrade: websocket
)建立持久连接,双向实时通信。
- 优点:最低延迟,支持双向交互,节省带宽
- 缺点:实现复杂,需单独处理连接状态
- 延迟:极低
- 适用场景 :聊天室、在线游戏、协同编辑等 高实时双向交互 需求
笔者曾经服务于北京一家电商公司,参与直播答题功能的研发。
直播答题整体架构见下图:
Netty TCP 网关的技术选型是:Netty、ProtoBuf、WebSocket ,选择 WebSocket 是因为它支持双向实时通信,同时 Netty 内置了 WebSocket 实现类,工程实现起来相对简单。
4 Server Send Event(SSE)
基于 HTTP 协议,服务器可 主动推送 数据流(如Content-Type: text/event-stream
),浏览器通过EventSource
API 监听。
- 优点:原生支持断线重连,轻量级(HTTP协议)
- 缺点:不支持浏览器向服务器发送数据
- 延迟:低(服务器可即时推送)
- 适用场景 :股票行情、实时日志等 服务器单向推送 需求。
SSE 最经典的应用场景是 : DeepSeek web 聊天界面 ,如图所示:
当在 DeepSeek 对话框发送消息后,浏览器会发送一个 HTTP 请求 ,服务端会通过 SSE 方式将数据返回到浏览器。
5 总结
| 特性 | 短轮询 | 长轮询 | SSE | WebSocket | | ------------ | -------------- | -------------- | ------------- | -------------------- | | 通信方向 | 浏览器→服务器 | 浏览器→服务器 | 服务器→浏览器 | 双向通信 | | 协议 | HTTP | HTTP | HTTP | WebSocket(基于TCP) | | 实时性 | 低 | 中 | 高 | 极高 | | 资源消耗 | 高(频繁请求) | 中(挂起连接) | 低 | 低(长连接) |
选择建议:
- 需要 简单兼容性 → 短轮询
- 需要 中等实时性 → 长轮询
- 只需 服务器推送 → SSE
- 需要 全双工实时交互 → WebSocket

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
当系统闹脾气:用「因果推断」哄稳技术的心
背景 系统稳定性问题往往涉及复杂的因果关系。例如,一个系统的崩溃可能由多个因素引起,包括硬件故障、软件bug、业务配置、外部攻击或其他操作不当等。理解这些因素之间的因果关系对于系统稳定性建设至关重要。 举个例子:服务雪崩 A服务调用B服务之间发生了雪崩效应,原本B本身有点小问题,而A由于内置的各种容错和重试机制,反而加剧了B的服务负载,导致其出现更多的失败。这些失败触发了A的无限重试,使得情况进一步恶化,最终引发了雪崩。在这一过程中,究竟是A的重试导致的B的过载,还是B的原有问题引发了A的重试,形成了一个因果循环。这里看谁是因谁是果呢? 在这种情况下,我们可以认为A和B之间发生的是一种相互作用,导致了一个负反馈循环,最终引发了雪崩效应。具体来说,A和B之间的因果关系可以这样理解: B的小问题是初始因: B服务的小问题是触发事件,它导致了A服务的一些请求失败。 A的容错和重试机制是中间因: 通常,容错和重试是为了提高系统的稳定性。然而,在这种情况下,A服务的容错机制和重试策略反而放大了问题,因为它们没有正确地识别到B服务已经过载的情况。 B的服务过载是直接果: A服务无限重试导致B服...
- 下一篇
流程编排中间件 spider-node 发布 2.0 版本,具备 AI 能力
spider-node 是一个流程编排中间件,于 2023 年发布,可以帮助开发者快速构建业务中台、领域模型,实现系统之间最大程度解耦,从而提升开发效率。 最近,spider-node 发布了2.0 版本——spider-node-ai,最大特性就是支持AI,具备 AI 编码、AI 测试、自动化部署、自动化扩缩容等能力。该中间件通过集成 LangChain、AgentScope 等智能体(Agent)框架,结合谷歌云、阿里云等云厂商提供的大模型 API(如千问),实现AI能力的快速接入与扩展。2.0 版本想要推动 web 层面研发思想改革,完成 DDD、中台没有完成的事业。 spider-node 具备诸多优势,比如: 业务可视:编排好的图示模型即为代码真实的执行链路,通过所见( 图示模型 )即所得( 代码执行 )的方式在技术和业务之间架起一道通用语言的桥梁,使彼此之间沟通更加顺畅,在spider-ui中可快速修改模型,不需要发版进行部署。 配置灵活:提供开始事件、结束事件、服务节点、排他网关、包含网关、并行网关、条件表达式,等配置组件,可以支持变态复杂的业务流程 性能优异:最底层采用...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Mario游戏-低调大师作品
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启