【WebSocket】學習總結

是一種協議;
作用與Web應用程序和服務端之間;

實時的、雙向的;

通過單一的TCP提供了持久化連接;

優勢:

實時、雙向、可以減少網絡的負載;

劣勢:

需要客戶端和服務端雙方都支持;

連續保持連接需要占用一些內存CPU資源;

安全問題:安全性顯著弱于同等配置的HTTP/REST API(因長連接的特性放大攻擊面),需要組合使用WSS+Origin校驗+消息認證+內容過濾

基本概念:

基于TCP協議;

客戶端發送一個WebSocket連接請求,之后服務端也反饋一個協議響應以確認要求。在這個握手期間,客戶端和服務端會協商好使用的協議版本、支持的子協議、支持的擴展選項等等。握手完成后,連接會保持打開的狀態。支持的文件數據格式包括了二進制數據和文本數據。

特點就是實時、雙向、可靠、持久。

用于在線游戲、實時聊天。

生命周期:

連接建立:客戶端發送一個請求,服務端響應一個握手,然后連接就建立了;

?

連接開放:連接建立并且開放,客戶端和服務端之間可以相互發送數據;

?

連接關閉:可以是被服務端或者客戶端發起的一個關閉幀來關閉連接;

?

連接關閉完成:WebSocket的連接完全關閉。

注意:WebSocket連接在任何時候都有可能關閉,如遇網絡故障、服務端崩潰。

消息格式:

文本或二進制數據;

消息構成是消息頭+消息體。

性能:

雙向通信性能更好:使用單一的TCP連接;

更小的網絡流量:與HTTP相比,WebSocket的協議需要更少的網絡流量維護連接,因為它不需要再每個請求/響應交換中發送頭部信息;

更低的延遲:WebSocket協議允許服務器主動向客戶端推送消息,而不需要客戶端先發送消息;

更好的服務端資源管理:WebSocket可以保持持續活動的連接狀態,服務端可以更好地管理客戶端的連接,減少服務端的開銷和處理時間。

如何優化WebSocket的性能:

減少消息的大小:WebSocket傳輸的數據大小對性能有很大的影響,盡可能使用二進制傳輸協議來代替文本傳輸,或者用壓縮算法對消息進行壓縮;

使用CDN(內容分發網絡)加速:可以將靜態資源緩存到離用戶更近的節點上,提高傳輸速度和性能,CDN可以緩存WebSocket的初始握手,避免不必要的網絡延遲;

使用負載均衡:通過使用負載均衡實現分配并平衡多個服務器的負載,避免單個服務器過載,同時也提高了服務的伸縮性;

優化服務端代碼:WebSocket服務端代碼的性能時關鍵因素,使用高效的框架和算法可以減少資源占用而提升速度;

避免網絡阻塞:WebSocket會受到網絡阻塞的影響,當有太多的數據連接同時請求時,服務器性能會下降,使用更合適的線程池和異步IO操作可以避免線程阻塞,提高WebSocket的并發性能。

本文是個人對于

萬字詳解,帶你徹底掌握 WebSocket 用法(至尊典藏版)寫的不錯_websocket用法-CSDN博客

的學習總結。

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

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

相關文章

“組件協作”模式之策略模式

目錄 策略模式引例動機 Motivation模式定義結構要點總結 策略模式 引例 稅務計算系統,根據各個國家的稅法,進行稅務計算。各個國家稅法規定差別很大,需對應進行相應的實現。 常規解耦前寫法 使用if-else語句或switch-case語句進行結構化分…

VS Git巨坑 切換分支失敗導致原分支被修改

VS2013Git 首先當前分支(分支A)的變更已經提交,應該可以正常切換分支。 想切換到一個比較老的分支B(跟當前分支存在較大差異,增加了很多文件),VS中提示切換失敗,當前分支仍然是分支A…

uniapp頁面間通信uni.$on與通過uni.navigateTo中eventChannal的方式的區別

背景。無意間開發uniapp程序用到了頁面跳轉數據傳遞的兩種方式。但各用于什么場景,有什么區別記錄一下。大模型給的內容較多,貼出一些結論。eventChannel文檔鏈接uni.$emit文檔鏈接 頁面跳轉而非全局事件通知,優先選擇eventChanel的方式。 首…

理解對話上下文

1、pom依賴 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><langchain4j.version>…

【Java高頻面試問題】數據庫篇

【Java高頻面試問題】數據庫篇 為什么MySQL選擇B樹作為索引一、B 樹的優勢特性二、與常見數據結構的對比 索引優化一、索引類型及使用場景二、索引優化核心策略1. 避免索引失效場景2. 性能優化實踐3. 表結構與架構優化 三、高頻面試問題參考答案總結&#xff1a;面試核心要點 數…

《Whisper:開啟語音識別新時代的鑰匙》

Whisper 模型:技術革新的基石 在當今科技飛速發展的時代,自動語音識別(ASR)技術作為人工智能領域的關鍵分支,正深刻地改變著人們的生活與工作方式。從智能語音助手到實時字幕生成,從語音交互設備到智能客服系統,ASR 技術無處不在,為人們帶來了前所未有的便利與效率提升…

關于 pdd:anti_content參數分析與逆向

一、逆向目標 目標&#xff1a;獲取pdd商品列表接口數據網址&#xff1a;aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbS9ob21lL2hvbWUv 二、逆向步驟 2.1 anti_content 入口定位 >1 找到需加密參數 >2 全局搜索定位 這里只出來一個結果&#xff0c;很明顯&#xff0c;點進去。 …

限流系列之五:TDMQ RabbitMQ Serverless 版限流機制深度解析與實踐指南

導語 分布式集群限流是保障云服務高可用性的核心技術手段&#xff0c;其意義不僅在于防止系統過載&#xff0c;更是構建彈性架構、優化資源效率、實現業務可持續性的關鍵策略。未來&#xff0c;隨著邊緣計算和 Serverless 的普及&#xff0c;限流技術將進一步與底層基礎設施深…

官方鏈接內容整理的 Spark-TTS Windows 安裝完整流程

官方鏈接內容整理的 Spark-TTS Windows 語音克隆 安裝完整流程 官方鏈接內容整理的 Spark-TTS Windows 安裝完整流程&#xff1a; Spark TTS&#xff1a;基于大型語言模型的文本轉語音模型 Spark-TTS 是一個先進的文本轉語音系統&#xff0c;利用大型語言模型&#xff08;LLM…

Spring Cloud Config動態刷新實戰指南

以下是利用 Spring Cloud Config + Bus 實現配置動態刷新的完整步驟和原理說明: 一、核心原理 消息總線機制 Bus 通過消息代理(如 RabbitMQ/Kafka)建立公共 Topic(默認 springCloudBus),當配置變更時,任一服務觸發刷新請求,消息會廣播至所有監聽該 Topic 的服務實例,實…

Linux 修改密碼教程

Linux 修改密碼教程 Linux 系統中修改密碼是非常常見的管理操作&#xff0c;無論是修改當前用戶密碼還是其他用戶的密碼&#xff0c;通常都可以通過終端完成。本文將詳細介紹如何在 Linux 系統中修改密碼&#xff0c;并包括修改其他用戶密碼的方法。 1. 修改當前用戶密碼 修改…

正則表達式詳解:從基礎到高級應用的全面指南

文章大綱 引言&#xff1a;什么是正則表達式&#xff1f; 在編程和文本處理領域&#xff0c;正則表達式&#xff08;Regular Expression&#xff0c;簡稱 regex&#xff09;是一種強大的工具&#xff0c;用于描述和匹配文本中的特定模式。它本質上是一種由字符和特殊符號組成…

flutter結合ai工具(其他語言通用)

一、為什么Flutter開發者需要免費AI工具&#xff1f; 1. 減少重復性編碼 Flutter開發中&#xff0c;UI組件、網絡請求、狀態管理等代碼高度重復&#xff0c;AI可自動生成這些代碼。 示例&#xff1a;輸入"創建一個Material Design風格的登錄頁面"&#xff0c;AI工具…

鴻蒙容器組件 Row 全解析:水平布局技術與多端適配指南

一、引言&#xff1a;Row 組件 —— 水平布局的核心引擎 在鴻蒙全場景應用開發中&#xff0c;Row 容器組件作為水平布局的標準載體&#xff0c;通過聲明式語法實現子組件的有序水平排列。作為線性布局體系的重要組成部分&#xff0c;其簡潔的屬性體系與強大的適配能力&#xf…

基于 PCIe 架構的處理器系統

處理器系統A 在有些處理器系統中&#xff0c;沒有直接提供PCI總線&#xff0c;此時需要使用PCIe橋&#xff0c;將PCIe鏈路轉換為PCI總線之后&#xff0c;才能連接PCI設備 在這種結構中&#xff0c;RC由兩個FSB-to-PCIe橋和存儲器控制器組成。 FSB是Front Side Bus的縮寫&…

Qt 與 Halcon 聯合開發五:為何與如何將耗時算法移入子線程

在 Qt 應用程序開發中&#xff0c;界面響應速度直接影響用戶體驗。而在集成圖像處理庫如 Halcon 的項目中&#xff0c;耗時算法一旦運行于主線程中&#xff0c;極易造成界面卡頓甚至假死。本篇文章將圍繞耗時算法必須移入子線程執行這一核心原則&#xff0c;結合 Qt 與 Halcon …

聚焦OpenVINO與OpenCV顏色通道轉換的實踐指南

顏色通道順序問題&#xff1a;OpenVINO模型RGB輸入與OpenCV BGR格式的轉換 在計算機視覺任務中&#xff0c;框架間的顏色通道差異常導致模型推理錯誤。以下方法解決OpenVINO模型需要RGB輸入而OpenCV默認輸出BGR的問題。 理解核心差異 OpenCV的imread()函數遵循BGR通道順序&a…

【軟考高級系統架構論文】論企業集成平臺的理解與應用

論文真題 企業集成平臺 (Enterprise Integration Platform, EIP) 是支持企業信息集成的環境,其主要功能是為企業中的數據、系統和應用等多種對象的協同運行提供各種公共服務及運行時的支撐環境。企業集成平臺能夠根據業務模型的變化快速地進行信息系統的配置和調整,保證不同…

LabVIEW光譜儀設計

采用LabVIEW 開發平臺&#xff0c;搭配品牌硬件構建光譜儀系統&#xff0c;實現光譜數據的高效采集、分析與顯示&#xff0c;展現 LabVIEW 在儀器開發中的快速集成與靈活擴展能力。 ? 應用場景 科研領域&#xff1a;用于材料光譜特性研究、光學實驗數據分析&#xff0c;支持高…

Nginx配置文件介紹和基本使用

Nginx配置文件介紹和基本使用 Nginx 是一款高性能的 HTTP 服務器、反向代理服務器及電子郵件代理服務器&#xff0c;由俄羅斯工程師 Igor Sysoev 開發&#xff0c;并于2004年首次公開發布。以輕量級、高并發能力、穩定性和低資源消耗著稱。 主要功能 HTTP服務器&#xff1a;…