1. HTTP 长连接(HTTP Persistent Connection)
-
描述:基于 HTTP/1.1 的默认特性,通过
Connection: keep-alive
头部保持 TCP 连接复用。 -
特点:
-
单个 TCP 连接可传输多个 HTTP 请求/响应。
-
空闲超时后自动关闭(时间由服务器或客户端配置)。
-
-
应用场景:
-
Web 页面加载(减少重复握手开销)。
-
API 频繁调用的场景。
-
2. WebSocket
-
描述:基于 HTTP 升级的全双工通信协议(
ws://
或wss://
),建立后连接长期存活。 -
特点:
-
双向实时通信,服务器可主动推送数据。
-
低延迟,适合高频交互。
-
-
应用场景:
-
实时聊天、在线协作工具(如 Slack)。
-
股票行情推送、游戏实时同步。
-
3. TCP 长连接(自定义协议)
-
描述:直接基于 TCP 层实现的长连接,通常用于自定义二进制协议。
-
特点:
-
灵活控制连接生命周期和数据格式。
-
需自行处理心跳、重连等机制。
-
-
应用场景:
-
物联网设备通信(如 MQTT 底层)。
-
金融交易系统、私有协议通信。
-
4. gRPC(基于 HTTP/2)
-
描述:基于 HTTP/2 的多路复用长连接,支持双向流式通信。
-
特点:
-
单连接可并行处理多个请求(多路复用)。
-
支持 Protobuf 高效序列化。
-
-
应用场景:
-
微服务间的高性能 RPC 调用。
-
流式数据传输(如视频帧推送)。
-
5. 数据库长连接
-
描述:客户端与数据库服务端维持的持久连接池。
-
特点:
-
避免频繁建立连接的开销(如 MySQL 的三次握手)。
-
需管理连接泄漏和超时问题。
-
-
应用场景:
-
高并发数据库访问(如连接池:HikariCP、Druid)。
-
6. MQTT(消息队列长连接)
-
描述:轻量级物联网协议,基于 TCP 长连接实现发布/订阅模型。
-
特点:
-
支持低带宽、不稳定网络环境。
-
心跳机制保持连接活跃。
-
-
应用场景:
-
物联网设备(如传感器数据上报)。
-
移动端消息推送(如 Firebase Cloud Messaging)。
-
7. QUIC(HTTP/3 底层)
-
描述:基于 UDP 的可靠传输协议,默认复用长连接。
-
特点:
-
解决 TCP 队头阻塞问题,连接迁移能力强。
-
快速握手(0-RTT)。
-
-
应用场景:
-
移动端应用(如 YouTube、Google 服务)。
-
高延迟网络下的实时通信。
-
8. 其他长链接技术
-
Server-Sent Events (SSE):
-
单向服务器推送(基于 HTTP),适合只需服务器主动推送的场景(如新闻订阅)。
-
-
长轮询(Long Polling):
-
模拟实时性的变通方案,严格来说并非真正长连接,但复用 HTTP 连接。
-
长链接的核心优势
-
减少延迟:避免重复 TCP 握手/TLS 协商。
-
提升吞吐:复用连接降低系统资源消耗。
-
实时性:支持服务端主动推送(如 WebSocket)。
选择建议
-
需要双向实时通信 → WebSocket/gRPC。
-
物联网/低功耗设备 → MQTT。
-
高性能 RPC → gRPC。
-
兼容现有 Web 基础设施 → HTTP/2 或 SSE。