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。