自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊四種實(shí)時(shí)通信技術(shù):短輪詢、長輪詢、WebSocket 和 SSE

網(wǎng)絡(luò) 通信技術(shù)
客戶端發(fā)起請求后,Nacos 服務(wù)端不會立即返回請求結(jié)果,而是將請求掛起等待一段時(shí)間,如果此段時(shí)間內(nèi)服務(wù)端數(shù)據(jù)變更,立即響應(yīng)客戶端請求,若是一直無變化則等到指定的超時(shí)時(shí)間后響應(yīng)請求,客戶端重新發(fā)起長輪詢。

這篇文章,我們聊聊 四種實(shí)時(shí)通信技術(shù):短輪詢、長輪詢、WebSocket 和 SSE 。

1.短輪詢

瀏覽器 定時(shí)(如每秒)向服務(wù)器發(fā)送 HTTP 請求,服務(wù)器立即返回當(dāng)前數(shù)據(jù)(無論是否有更新)。

圖片圖片

  • 優(yōu)點(diǎn):實(shí)現(xiàn)簡單,兼容性極佳
  • 缺點(diǎn):高頻請求浪費(fèi)資源,實(shí)時(shí)性差(依賴輪詢間隔)
  • 延遲:高(取決于輪詢頻率)
  • 適用場景:兼容性要求高,延遲不敏感的簡單場景。

筆者職業(yè)生涯印象最深刻的短輪詢應(yīng)用場景是比分直播

圖片圖片

如圖所示,用戶進(jìn)入比分直播界面,瀏覽器定時(shí)查詢賽事信息(比分變動、黃紅牌等),假如數(shù)據(jù)有變化,則重新渲染頁面。

這種方式實(shí)現(xiàn)起來非常簡單可靠,但是頻繁的調(diào)用后端接口,會對后端性能會有影響(主要是 CPU)。同時(shí),因?yàn)橐蕾囕喸冮g隔,頁面數(shù)據(jù)變化有延遲,用戶體驗(yàn)并不算太好。

2.長輪詢

瀏覽器發(fā)送 HTTP 請求后,服務(wù)器 掛起連接 直到數(shù)據(jù)更新或超時(shí),返回響應(yīng)后瀏覽器立即發(fā)起新請求。

圖片圖片

  • 優(yōu)點(diǎn):減少無效請求,比短輪詢實(shí)時(shí)性更好
  • 缺點(diǎn):服務(wù)器需維護(hù)掛起連接,高并發(fā)時(shí)資源消耗大
  • 延遲:中(取決于數(shù)據(jù)更新頻率)
  • 適用場景:需要較好實(shí)時(shí)性且無法用 WebSocket/SSE 的場景(如消息通知)

長輪詢最常見的應(yīng)用場景是:配置中心,我們耳熟能詳?shù)淖灾行?Nacos 、阿波羅都是依賴長輪詢機(jī)制。

nacos長輪詢nacos長輪詢

客戶端發(fā)起請求后,Nacos 服務(wù)端不會立即返回請求結(jié)果,而是將請求掛起等待一段時(shí)間,如果此段時(shí)間內(nèi)服務(wù)端數(shù)據(jù)變更,立即響應(yīng)客戶端請求,若是一直無變化則等到指定的超時(shí)時(shí)間后響應(yīng)請求,客戶端重新發(fā)起長輪詢。

3.WebSocket

基于 TCP 的全雙工協(xié)議,通過 HTTP 升級握手(Upgrade: websocket)建立持久連接(雙向?qū)崟r(shí)通信)。

image.pngimage.png

  • 優(yōu)點(diǎn):最低延遲,支持雙向交互,節(jié)省帶寬
  • 缺點(diǎn):實(shí)現(xiàn)復(fù)雜,需單獨(dú)處理連接狀態(tài)
  • 延遲:極低
  • 適用場景:聊天室、在線游戲、協(xié)同編輯等 高實(shí)時(shí)雙向交互 需求

筆者曾經(jīng)服務(wù)于北京一家電商公司,參與直播答題功能的研發(fā)。

圖片圖片

直播答題整體架構(gòu)見下圖:

圖片圖片

TCP 網(wǎng)關(guān)的技術(shù)選型是:Netty、ProtoBuf、WebSocket ,選擇 WebSocket 是因?yàn)樗С蛛p向?qū)崟r(shí)通信,同時(shí) Netty 內(nèi)置了 WebSocket 實(shí)現(xiàn)類,工程實(shí)現(xiàn)起來相對簡單。

4.Server Send Event(SSE)

基于 HTTP 協(xié)議,服務(wù)器可 主動推送 數(shù)據(jù)流(如Content-Type: text/event-stream),瀏覽器通過EventSource API 監(jiān)聽。

圖片圖片

  • 優(yōu)點(diǎn):原生支持?jǐn)嗑€重連,輕量級(HTTP協(xié)議)
  • 缺點(diǎn):單向通信(服務(wù)端--》客戶端),低版本 IE 瀏覽器不支持
  • 延遲:低(服務(wù)器可即時(shí)推送)
  • 適用場景:股票行情、實(shí)時(shí)日志等 服務(wù)器單向推送 需求。

SSE 最經(jīng)典的應(yīng)用場景是 : DeepSeek web 聊天界面  ,如圖所示:

圖片圖片

當(dāng)在 DeepSeek 對話框發(fā)送消息后,瀏覽器會發(fā)送一個(gè) HTTP 請求 ,服務(wù)端會通過 SSE 方式將數(shù)據(jù)返回到瀏覽器。

圖片圖片

5.總結(jié)

特性

短輪詢

長輪詢

SSE

WebSocket

協(xié)議

HTTP

HTTP

HTTP

WebSocket(基于TCP)

實(shí)時(shí)性

極高

資源消耗

高(頻繁請求)

中(掛起連接)

低(長連接)

選擇建議

  • 需要 簡單兼容性 → 短輪詢
  • 需要 中等實(shí)時(shí)性 → 長輪詢
  • 只需 服務(wù)器推送 → SSE
  • 需要 全雙工實(shí)時(shí)交互 → WebSocket
責(zé)任編輯:武曉燕 來源: 勇哥Java實(shí)戰(zhàn)
相關(guān)推薦

2023-11-28 08:49:01

短輪詢WebSocket長輪詢

2024-11-04 09:04:20

2025-03-31 08:39:55

2024-12-18 14:10:33

2013-03-15 10:57:13

AJAXDotNet

2021-08-24 08:01:15

死鎖工具多線編程

2024-05-23 11:26:02

2024-03-19 08:45:45

WebSocketSpring應(yīng)用開發(fā)

2020-12-10 08:44:35

WebSocket輪詢Comet

2011-05-18 13:28:46

jQueryPHPAJAX

2023-08-26 20:08:15

分庫分表Spring

2021-04-07 19:34:16

社區(qū)買菜團(tuán)購

2022-12-06 13:02:27

深度學(xué)習(xí)AI

2024-08-19 12:22:48

2025-04-14 11:41:12

RocketMQ長輪詢配置

2025-01-02 09:23:05

2023-12-18 08:36:39

消息隊(duì)列微服務(wù)開發(fā)

2022-07-04 08:29:13

electron通信

2022-07-14 08:36:28

NacosApollo長輪詢

2025-02-26 02:00:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號