目錄
- 前言
- 正文
前言
🤟 找工作,來萬碼優才:👉 #小程序://萬碼優才/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、協作白板) 游戲對戰、實時交易系統(股票、幣圈) |