狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

HTTP 長(zhǎng)輪詢與 WebSockets

admin
2024年10月18日 21:13 本文熱度 418

HTTP 長(zhǎng)輪詢

它解決了在 Web 上構(gòu)建雙向應(yīng)用程序的問題 — 一個(gè)專為客戶端發(fā)出請(qǐng)求而服務(wù)器響應(yīng)的單向世界而設(shè)計(jì)的平臺(tái)。這是通過顛倒請(qǐng)求-響應(yīng)模型來實(shí)現(xiàn)的:

  1. 客戶端向服務(wù)器發(fā)送 GET 請(qǐng)求: 與傳統(tǒng)的 HTTP 請(qǐng)求不同,您可以將其視為開放式請(qǐng)求。它不是要求特定的響應(yīng),而是在準(zhǔn)備好時(shí)請(qǐng)求任何響應(yīng)。

  2. 時(shí)間流逝: HTTP 超時(shí)可使用 Keep-Alive 標(biāo)頭進(jìn)行優(yōu)化。長(zhǎng)輪詢通過設(shè)置非常長(zhǎng)或無限期的超時(shí)時(shí)間來利用這一點(diǎn),因此即使服務(wù)器沒有立即響應(yīng),請(qǐng)求也會(huì)保持打開狀態(tài)。

  3. 服務(wù)器響應(yīng): 當(dāng)服務(wù)器有要發(fā)送的內(nèi)容時(shí),它會(huì)通過響應(yīng)關(guān)閉連接。這可能是新的聊天消息、更新的體育比分或突發(fā)新聞提醒。

  4. 客戶端發(fā)送新的 GET 請(qǐng)求,然后循環(huán)再次開始。

HTTP 長(zhǎng)輪詢成功的關(guān)鍵在于,它不會(huì)改變基本原理,尤其是在客戶端上。但是,大多數(shù)工作都需要在服務(wù)器上進(jìn)行。特別是,管理可能數(shù)十萬個(gè)連接的狀態(tài)是資源密集型的。

當(dāng)使服務(wù)器能夠?qū)?shù)據(jù)推送到 Web 客戶端時(shí),HTTP 長(zhǎng)輪詢是一種解決方法。它使 HTTP 略微變形,為我們提供了一種廣泛可用的方法,讓 Web 服務(wù)器將數(shù)據(jù)推送到 Web 客戶端。要了解長(zhǎng)輪詢?cè)谀男┓矫嬗杏茫覀儜?yīng)該看看它在哪些方面做得好,在哪些方面做得不夠。

優(yōu)點(diǎn)和缺點(diǎn)

  • 幾乎在每個(gè) Web 客戶端中都可用: 因?yàn)樗褂没镜?HTTP 請(qǐng)求-響應(yīng)周期,所以幾乎所有允許您調(diào)整超時(shí)并支持 XMLHttpRequest 的支持 HTTP 的客戶端(瀏覽器、庫、IoT 設(shè)備等)都已經(jīng)支持長(zhǎng)輪詢。

  • 您的 Web 服務(wù)器已經(jīng)支持它: 盡管您需要編寫自己的代碼來處理輪詢?cè)趹?yīng)用程序后端的工作時(shí)間,但長(zhǎng)輪詢適用于現(xiàn)有的 Web 基礎(chǔ)架構(gòu)。

  • 未被防火墻阻止: 現(xiàn)代實(shí)時(shí)協(xié)議使用與 HTTP 不同的端口,有些協(xié)議使用 UDP 而不是 TCP。盡管問題比以前小得多,但一些公司防火墻可能會(huì)阻止這些協(xié)議,但不會(huì)阻止 HTTP。

  • 效率低下且速度慢: 現(xiàn)代實(shí)時(shí)協(xié)議(如 WebSocket)產(chǎn)生的開銷比長(zhǎng)輪詢少得多。他們?cè)O(shè)置單個(gè)持久連接并根據(jù)需要發(fā)送數(shù)據(jù)。長(zhǎng)輪詢需要每次服務(wù)器向客戶端發(fā)送內(nèi)容時(shí)進(jìn)行完整的 HTTP 握手。這會(huì)浪費(fèi)帶寬并增加延遲。

  • 規(guī)模有點(diǎn)復(fù)雜: 我們要求它做的越多,長(zhǎng)輪詢作為一種解決方法的狀態(tài)就越清晰。跨多個(gè)服務(wù)器擴(kuò)展長(zhǎng)輪詢意味著在基本無狀態(tài)協(xié)議中跟蹤會(huì)話狀態(tài)。

  • 難以做出保證: 很難保證消息會(huì)按順序從服務(wù)器到達(dá)客戶端,或者根本無法保證。例如,如果客戶端打開了兩個(gè)使用相同服務(wù)器資源的瀏覽器選項(xiàng)卡,并且客戶端應(yīng)用程序?qū)?shù)據(jù)保存到本地存儲(chǔ)(如 localStorage 或 IndexedDb),則無法內(nèi)置保證不會(huì)多次寫入重復(fù)數(shù)據(jù)。

WebSockets 瀏覽器

WebSocket 是一種實(shí)時(shí)技術(shù),它通過持久的單套接字連接在客戶端和服務(wù)器之間實(shí)現(xiàn)雙向、全雙工通信。WebSocket 連接根據(jù)需要保持活動(dòng)狀態(tài),允許服務(wù)器和客戶端以最小的開銷隨意發(fā)送數(shù)據(jù)。

WebSocket API 是一個(gè)編程接口,用于創(chuàng)建 WebSocket 連接并管理 Web 應(yīng)用程序中客戶端和服務(wù)器之間的數(shù)據(jù)交換。它為開發(fā)人員提供了一種在其應(yīng)用程序中使用 WebSocket 協(xié)議的簡(jiǎn)單標(biāo)準(zhǔn)化方法。

如今,幾乎所有現(xiàn)代瀏覽器都支持 WebSocket API。此外,還有大量框架和庫(包括開源和商業(yè)解決方案)實(shí)現(xiàn) WebSocket API。

例如,您可以使用 WebSockets 來:

  • 強(qiáng)大的實(shí)時(shí)聊天體驗(yàn)。

  • 廣播實(shí)時(shí)事件數(shù)據(jù),例如實(shí)時(shí)比分和流量更新。

  • 促進(jìn)共享項(xiàng)目和白板上的多人協(xié)作。

  • 發(fā)送通知和警報(bào)。

  • 使您的后端和前端保持實(shí)時(shí)同步。

  • 將實(shí)時(shí)位置跟蹤功能添加到城市交通和食品配送應(yīng)用程序。

建立 WebSocket 連接的過程稱為開始握手,包括客戶端和服務(wù)器之間的 HTTP 請(qǐng)求/響應(yīng)交換。成功打開握手后,客戶端和服務(wù)器可以通過持久 WebSocket 連接交換消息(幀)。WebSocket 消息可能包含字符串(純文本)或二進(jìn)制數(shù)據(jù)。一旦持久 WebSocket 連接達(dá)到其目的,就可以終止它;客戶端和服務(wù)器都可以通過發(fā)送 close 消息來啟動(dòng)結(jié)束握手。

WebSocket 優(yōu)勢(shì)

  • WebSockets 保持唯一的連接打開,同時(shí)消除了長(zhǎng)輪詢引起的延遲問題。

  • 支持全雙工異步消息傳遞,以便客戶端和服務(wù)器都可以獨(dú)立地將消息流式傳輸?shù)奖舜恕?/p>

  • WebSockets 通常不使用 ,因此,不會(huì)在每個(gè)服務(wù)器請(qǐng)求上發(fā)送標(biāo)頭。這反過來又減小了數(shù)據(jù)有效負(fù)載的大小。XMLHttpRequest

  • WebSockets 無需任何重新配置即可通過大多數(shù)防火墻,并且具有基于源的安全模型。

WebSocket 的缺點(diǎn)

  • 當(dāng)連接終止時(shí),WebSockets 不會(huì)自動(dòng)恢復(fù) — 這是您需要自己實(shí)現(xiàn)的事情,也是存在許多客戶端庫的部分原因。

  • 這并不完全是一個(gè)缺點(diǎn),但值得一提的是 WebSocket 是有狀態(tài)的,這意味著如果您水平擴(kuò)展,您將不得不考慮如何管理狀態(tài)。


該文章在 2024/10/19 12:20:47 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved