加载中...
长轮询是一种基于 HTTP 实现服务器向客户端推送的技术。客户端发起请求后,服务器在有新数据前一直挂起连接,有数据再返回,客户端随即再次请求。它是 WebSocket 普及前实现准实时通信的常用折中方案。

| 类型 | 实时通信技术 |
| 基础协议 | HTTP |
| 通信方式 | 服务器推送(模拟) |
| 对比技术 | 短轮询、WebSocket |
| 常见用途 | 消息通知 |
HTTP 长轮询(Long Polling)是一种利用普通 HTTP 请求模拟服务器主动推送的技术。在传统的短轮询中,客户端每隔固定时间就询问一次服务器有无更新;而长轮询让服务器在没有新数据时不立即回复,而是把连接挂起,直到有数据或超时才返回,从而显著减少无效请求。
HTTP 本身是请求-响应模型,服务器无法主动向客户端发起通信,这给实时消息、通知等场景带来困难。在 WebSocket 尚未普及的年代,长轮询是应对这一限制的经典折中方案,它不需要浏览器或服务器支持新协议,仅用标准 HTTP 就能获得接近实时的推送效果。
长轮询曾广泛应用于网页聊天、消息通知、订单状态更新和实时数据面板等场景,许多早期即时通信框架都以它为核心。如今在需要兼容老旧浏览器或穿越对 WebSocket 不友好的网络环境时,长轮询仍作为降级方案存在,常见于 Socket.IO 等库的兼容传输层。
问:长轮询和 WebSocket 该怎么选?答:若环境支持,WebSocket 通常更高效,提供真正的全双工长连接;长轮询实现简单、兼容性好,适合作为不支持 WebSocket 时的降级方案。
问:长轮询会一直占用连接吗?答:每次挂起都会占用一个连接直到返回或超时,连接数较多时对服务器资源有一定压力,需要合理设置超时时间和并发上限。

| 类型 | 实时通信技术 |
| 基础协议 | HTTP |
| 通信方式 | 服务器推送(模拟) |
| 对比技术 | 短轮询、WebSocket |
| 常见用途 | 消息通知 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧