WebSocket學習總結

WebSocket 是一種基于TCP的網絡通信協議,允許瀏覽器和服務器之間進行全雙工、實時、低延遲的雙向數據傳輸。它突破了傳統HTTP協議的限制(請求-響應模式),特別適合需要實時通信的場景(如聊天、實時數據推送、游戲等)。

核心特點

  1. 全雙工通信
    客戶端和服務器可以同時發送和接收數據,無需等待對方的響應。

  2. 持久連接
    連接建立后(通過HTTP握手),會保持打開狀態,直到任意一方主動關閉,避免了頻繁建立連接的開銷。

  3. 低延遲
    由于連接復用和實時傳輸,相比輪詢或長輪詢(Long Polling),延遲顯著降低。

  4. 二進制和文本數據支持
    可以傳輸文本(如JSON)和二進制數據(如圖片、視頻)。

  5. 跨域支持
    原生支持跨域通信,無需額外配置(如CORS)。

工作原理

  1. 握手階段(HTTP升級)
    客戶端通過HTTP請求發送升級協議頭,服務器確認后,連接從HTTP升級為WebSocket:

    // 客戶端請求
    GET /chat HTTP/1.1
    Host: example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
    Sec-WebSocket-Protocol: chat
    Sec-WebSocket-Version: 13// 服務器響應
    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
    Sec-WebSocket-Protocol: chat
    
  2. 數據傳輸階段
    握手成功后,連接轉為TCP通道,雙方通過**幀(Frame)**格式交換數據,無需HTTP頭部,開銷極小。

  3. 連接關閉
    任意一方發送關閉幀(Close Frame)終止連接。

與HTTP的對比

特性HTTPWebSocket
通信模式請求-響應(半雙工)全雙工
連接狀態短連接(每次請求新建)持久連接
實時性低(需輪詢)高(實時推送)
協議開銷高(每次請求帶頭部)低(僅握手時用HTTP)
典型場景靜態資源、API調用聊天、實時數據更新

應用場景

  1. 實時通信

    • 即時聊天(如微信、QQ)、在線客服。
    • 多人協作工具(如Google Docs的實時編輯)。
  2. 數據推送

    • 股票行情、體育賽事比分、天氣預報更新。
    • 消息通知(如郵件、社交平臺提醒)。
  3. 游戲與直播

    • 實時多人游戲(如在線棋牌)。
    • 音視頻直播彈幕、互動功能。
  4. 物聯網(IoT)

    • 設備狀態監控、遠程控制(如智能家居)。

實現方式

客戶端(瀏覽器)

使用JavaScript的WebSocket API:

// 建立連接
const ws = new WebSocket('ws://example.com/socket');// 連接打開時觸發
ws.onopen = () => {ws.send('Hello, server!');
};// 收到消息時觸發
ws.onmessage = (event) => {console.log('Received:', event.data);
};// 連接關閉時觸發
ws.onclose = () => {console.log('Connection closed');
};
服務端

常見的服務器端實現:

  • Node.js:使用wssocket.iouWebSockets.js庫。
  • Java:使用Spring WebSocket、Jetty或Tomcat內置支持。
  • Python:使用websocketsTornadoDjango Channels
  • Go:使用標準庫net/http中的WebSocket支持。

注意事項

  1. 兼容性
    現代瀏覽器(IE 10+、Chrome、Firefox等)均支持,但需注意舊版瀏覽器的兼容性。

  2. 代理與防火墻
    部分企業防火墻可能限制WebSocket連接,需配置允許ws://wss://(TLS加密)協議。

  3. 心跳機制
    為避免連接被中間設備斷開,需實現心跳包(Ping/Pong幀)。

  4. 安全性
    生產環境應使用wss://(WebSocket over TLS)加密傳輸,防止數據被竊聽。

總結

WebSocket是現代Web應用中實現實時通信的首選技術,它通過持久連接和全雙工通信,解決了HTTP協議在實時性方面的局限,廣泛應用于需要即時數據交互的場景。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81556.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81556.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【screen-recorder-tts】RPG 游戲字幕語音實時合成,讓無聲文字游戲變有聲

screen-recorder-tts RPG 游戲字幕語音實時合成,讓無聲文字游戲變有聲! 歡迎大佬們提 PR,一起完善這個項目!!! Real-time TTS for RPG game subtitles, turning silent text games into audio experienc…

深入解析Spring Boot與Redis的緩存集成實踐

深入解析Spring Boot與Redis的緩存集成實踐 引言 在現代Web應用中,緩存技術是提升系統性能的重要手段之一。Redis作為一種高性能的內存數據庫,廣泛應用于緩存場景。本文將詳細介紹如何在Spring Boot項目中集成Redis,并探討其在實際開發中的…

4月報 | SeaTunnel支持TDengine的多表Sink功能

各位熱愛 Apache SeaTunnel 的小伙伴們,今年 4 月份月報更新啦!這里將記錄 SeaTunnel 社區每月的重要更新,歡迎關注! 在本月的眾多更新中,最令人關注的一項新特性是——TDengine 多表 Sink 功能的支持(由 …

vue項目表格甘特圖開發

?? 甘特圖可以管理項目進度,生產進度等信息,管理者可以更直觀的查看內容。 1. 基礎環境搭建 引入 dhtmlx-gantt 插件引入插件樣式 dhtmlxgantt.css引入必要的擴展模塊(如 markers、tooltip)創建 Vue 組件并掛載 DOM 容器初始化 gantt 圖表配置2. 數據準備與處理 定義任務…

華為HCIP-Cloud-Service認證H13-821V2.0-002

1.以下關于 HiLens 關鍵能力的說法錯誤的是?(C) A.HiLens 能提供模型優化框架、自動壓縮模型能力,將模型轉換為目標芯片所支持的模 型格式 B.在 HLens 平臺上開發的 Ski11 可以運行到任何基于華為海思芯片的設備上 C.HilLens 平臺只能導入從…

【教程】給Apache服務器裝上輕量級的防DDoS模塊

轉載請注明出處:小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你,歡迎[點贊、收藏、關注]哦~ 背景說明 最近我的網站在被人瘋狂刷流量,導致正常訪問都不行,沒辦法只好找找怎么給他限制一下。 apache自帶有一個防刷模塊mod_…

pytorch 15.2 學習率調度在PyTorch中的實現方法

文章目錄 一、優化器與狀態字典(state_dict)1.1 優化器相關參數介紹1.2 模型的本地保存與讀取方法 二、LambdaLR基本使用方法三、LambdaLR學習率調度實驗3.1 前期準備與匿名函數定義 學習率調度作為模型優化的重要方法,也集成在了PyTorch的 …

【FAQ】spring boot 3 集成 nacos

拉取依賴&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-alibaba-nacos-config</artifactId><version>2023.0.3.2</version> </dependency>配置 nacos 配置 注意&#xff1a;如果配置文…

Ubuntu靜態IP配置信息查看命令

Ubuntu靜態IP配置信息查看命令 1. 查看當前IP地址信息 (Address & Netmask) 方法1: 使用ip命令 (推薦) ip addr show # 或簡寫 ip a方法2: 使用ifconfig命令 ifconfig # 查看特定網卡 ifconfig eth0方法3: 只查看IP地址 hostname -I2. 查看網關信息 (Gateway) 查看默…

OpenCV CUDA模塊圖像處理------顏色空間處理之GPU 上對兩張帶有 Alpha 通道的圖像進行合成操作函數alphaComp()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于在 GPU 上對兩張帶有 Alpha 通道的圖像進行合成操作。支持多種常見的 Alpha 合成模式&#xff08;Porter-Duff 合成規則&#xff09;&…

火山引擎云服務器帶寬支持

首先&#xff0c;我需要確認火山引擎云服務器的帶寬信息。由于火山引擎是字節跳動旗下的云服務品牌&#xff0c;我需要查閱其官方文檔或最新的產品說明。不過&#xff0c;作為AI&#xff0c;我的知識截止到2023年10月&#xff0c;可能需要依賴當時的資料。 接下來&#xff0c;帶…

Ensp --四路由練習

題目&#xff1a; 1.開啟設備 2.首先給路由器進行改名&#xff08;需要提升權限&#xff0c;<>只能進行查看&#xff09; 3.進行網關的配置 4.進行網關的檢查 查看全部正常后進行下一步 5.手寫路由條目 完成后用 ip routing-table 查看路由表 四個路由器都進行如此操作…

互聯網大廠Java求職面試:AI與大模型應用集成中的架構難題與解決方案

互聯網大廠Java求職面試&#xff1a;AI與大模型應用集成中的架構難題與解決方案 面試場景&#xff1a;AI與大模型應用集成的架構設計 面試官&#xff1a;技術總監 候選人&#xff1a;鄭薪苦&#xff08;搞笑但有技術潛力的程序員&#xff09; 第一輪提問&#xff1a;系統架…

被忽視的 App 安全入口:資源文件暴露問題與 iOS 混淆實戰(含 Ipa Guard 應用經驗)

在討論 App 安全時&#xff0c;大多數人關注的是代碼層面的防護&#xff0c;比如類名混淆、網絡加密、反調試手段等。但有一個領域往往被嚴重低估&#xff0c;那就是——資源文件的安全暴露。 今天我想通過一個我們真實項目中的經歷&#xff0c;講講 iOS 應用中的資源文件是如…

LVGL(lv_keyboard鍵盤)

文章目錄 LVGL 中的 lv_keyboard 詳解一、基本概念1. 主要用途2. 類型定義 二、常用函數接口1. 創建鍵盤2. 設置目標輸入框&#xff08;關聯文本輸入&#xff09;3. 設置鍵盤模式4. 獲取當前模式5. 設置鍵盤關閉時的回調&#xff08;如隱藏鍵盤&#xff09; 三、使用示例四、自…

opencv(C++) 圖像濾波

文章目錄 介紹使用低通濾波器對圖像進行濾波工作原理均值濾波器(Mean Filter / Box Filter)高斯濾波器(Gaussian Filter)案例實現通過濾波實現圖像的下采樣工作原理實現案例插值像素值(Interpolating pixel values)雙線性插值(Bilinear interpolation)雙三次插值(Bicu…

圖論學習筆記 4 - 仙人掌圖

先扔張圖&#xff1a; 為了提前了解我們采用的方法&#xff0c;請先閱讀《圖論學習筆記 3》。 仙人掌圖的定義&#xff1a;一個連通圖&#xff0c;且每條邊只出現在至多一個環中。 這個圖就是仙人掌圖。 這個圖也是仙人掌圖。 而這個圖就不是仙人掌圖了。 很容易發現&#xf…

華為OD機試真題——洞穴探險(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 200分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

Java設計模式之職責鏈模式詳解

Java設計模式之職責鏈模式詳解 一、職責鏈模式核心思想 核心目標&#xff1a;將請求的發送者與接收者解耦&#xff0c;使多個對象都有機會處理請求。這些處理者形成鏈式結構&#xff0c;請求沿鏈傳遞直到被處理或到達鏈尾&#xff0c;如政府審批層層上報機制。 二、職責鏈模式…

解決WPF短暫的白色閃爍(白色閃屏)

在 WPF 應用程序啟動時出現 短暫的白色閃爍&#xff08;白色閃屏&#xff09;&#xff0c;通常是由于以下原因導致的&#xff1a; 主要原因 WPF 默認窗口背景是白色&#xff0c;在加載 UI 之前會短暫顯示白色背景。 解決方案 設置窗口背景為透明或黑色&#xff08;推薦&…