长连接、短连接与WebSocket的基本知识
目录
- 前言
- 正文
前言
🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF
爬虫神器,无代码爬取,就来:bright.cn
Java基本知识:
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
- 【Java项目】实战CRUD的功能整理(持续更新)
初次接入webSocket,对此分析与长短连接的差异所在
正文
先通过一个表格了解基本知识:
特性 | 短连接 | 长连接 | WebSocket |
---|---|---|---|
连接持续 | 请求后断开 | 持续连接 | 持续连接 |
通信方向 | 单向(请求-响应) | 单向为主 | 双向(全双工) |
建立开销 | 每次都建立 | 只需一次 | 一次升级后持续 |
实时性 | 差 | 一般 | 优秀 |
应用场景 | Web请求、API调用 | 数据库连接、消息队列 | 实时推送、IM、协作工具 |
传输协议 | TCP(HTTP) | TCP(Keep-Alive) TCP(升级为 WebSocket) |
具体各方面的知识如下:
- 短连接
指的是每次客户端与服务器通信时都重新建立一次连接,数据传输完成后立即关闭连接
每次通信都需三次握手、四次挥手(TCP协议)
适用于请求-响应模型,连接时间短
常见于:HTTP 1.0、REST API 接口等
✅ 优点:
节省资源,不需要长期维持连接
实现简单,适合访问频率较低的应用
❌ 缺点:
多次连接建立开销大(尤其在频繁请求时)
无法实时通信,延迟高
- 长连接
指客户端和服务器建立连接后保持不关闭,可用于多次数据交互
只需一次握手,可以多次通信
常见于:HTTP 1.1的 Keep-Alive、数据库连接池、Socket 通信等
✅ 优点:
避免重复建立连接,提高效率
更适合频繁通信的场景
❌ 缺点:
占用资源,需要心跳机制保持连接活跃
网络中断或服务器异常需特殊处理
- WebSocket
是一种在单个 TCP 连接上进行全双工通信的协议,允许服务器主动向客户端推送数据。
建立在 HTTP/HTTPS 上,升级为 WebSocket 协议(使用 Upgrade 头)
全双工通信,实时性强
广泛应用于聊天系统、在线游戏、实时行情等
✅ 优点:
单连接、低开销、可实时推送
全双工通信,客户端和服务端都可以主动发消息
基于标准,浏览器原生支持
❌ 缺点:
对服务器资源要求高,需保持连接状态
网络代理(如防火墙)可能影响连接建立
安全问题需注意(如 XSS、CSRF)
场景示例:
类型 | 场景 |
---|---|
短连接 | 请求频率低:新闻浏览、搜索请求 一次性传输即可完成任务的系统 |
长连接 | 数据库访问(如 MySQL 连接池) 长时间业务流程:支付交易、文件上传 |
WebSocket | 实时消息推送(IM、在线客服) 实时协同办公(Google Docs、协作白板) 游戏对战、实时交易系统(股票、币圈) |