Web 實時通信:從短輪詢到 WebSocket
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
在互聯網早期,網頁像一本翻頁雜志:用戶點擊,瀏覽器請求,服務器響應,頁面刷新。當產品經理提出“實時聊天”“股價閃動”“庫存秒變”這些需求時,HTTP 的“請求—響應”模型立刻顯得力不從心。于是,開發者經歷了一場從“笨拙輪詢”到“優雅全雙工”的技術進化。今天,就讓我們再走一遍這條路。 一、短輪詢思路簡單到極致: 客戶端每隔 X 秒發一次 Ajax,問“有新消息嗎?”服務器答“沒有”——循環往復。 ![]() 偽代碼 ![]() 痛點
短輪詢就像給服務器打“騷擾電話”,簡單,卻低效。 二、長輪詢聰明的工程師想到: 把電話“掛起不掛線”。客戶端發起 Ajax,服務器夯住這個連接,直到真的有消息才返回;客戶端收到后立即再掛一個,如此循環。 ![]() 優勢
新問題
長輪詢把“騷擾電話”變成了“占線等待”,但線路資源依舊吃緊。 三、WebSocketHTML5 帶來了 WebSocket——基于 TCP 的全雙工通道。 握手階段仍用 HTTP,升級協議后,雙方可隨時推送數據幀。 ![]() 1. 握手:HTTP 的極限操作 客戶端: ![]() 服務器返回 101: ![]() 狀態碼 101 表示:協議升級完成。此后數據幀不再走 HTTP。 2. 通信:幀級協議,雙向飛馳
3. 代碼示例(Node + 前端) 前端 ![]() Node 后端(ws 庫) ![]() 四、使用場景與權衡![]() 閱讀原文:點擊這里 該文章在 2025/8/15 20:59:53 編輯過 |
關鍵字查詢
相關文章
正在查詢... |