337p人体粉嫩胞高清图片,97人妻精品一区二区三区在线 ,日本少妇自慰免费完整版,99精品国产福久久久久久,久久精品国产亚洲av热一区,国产aaaaaa一级毛片,国产99久久九九精品无码,久久精品国产亚洲AV成人公司
網易首頁 > 網易號 > 正文 申請入駐

瀏覽器藏了10年的單行代碼,讓WebSocket成了冤大頭

0
分享至


2015年,瀏覽器廠商往JavaScript里塞了一行代碼,然后集體沉默。沒人教,文檔 bury 在角落,Stack Overflow 上搜到的全是 WebSocket 教程。結果過去十年,無數程序員為實時推送寫了成千上萬行重連邏輯、心跳檢測、狀態恢復——而答案早就躺在那兒,一行搞定。

這行代碼是 new EventSource('/events')。它做的事情和 WebSocket 很像,但哲學完全相反:WebSocket 是"你們隨便聊",EventSource(服務器發送事件,SSE)是"服務器說,客戶端聽"。

大多數實時場景根本不需要雙向對話。股價跳動、構建日志、通知紅點、直播彈幕——都是服務器推、客戶端收。用 WebSocket 做這些,就像為了收快遞專門雇個雙向對講的保安,SSE 則是門鈴響了去開門,完事。

一行代碼的暴力美學

EventSource 的 API 設計帶著一種老派的傲慢:連接、監聽、完事。

```javascript const source = new EventSource('/events'); source.onmessage = e => document.querySelector('#feed').textContent = e.data; ```

沒有 npm install,沒有 onclose 回調,沒有指數退避的重連算法。瀏覽器自動處理斷線重連,規范強制要求。你寫的代碼只管消費消息,基礎設施的臟活瀏覽器包了。

對比 WebSocket 的典型實現:onopen 握手、onerror 降級、onclose 啟動定時器、重連后比對消息 ID 補漏。這些代碼在無數項目里被復制粘貼,調試過凌晨三點的偶發斷連,而 SSE 的用戶根本沒意識到這些問題存在。

Rust 的 axum 框架里,SSE 端點長這樣:

```rust async fn events() -> Sse>> { let stream = stream::repeat_with(|| Event::default().data("update")) .map(Ok) .throttle(Duration::from_secs(1)); Sse::new(stream).keep_alive(KeepAlive::default()) } ```


返回一個流,運行時處理背壓、保活、客戶端斷開。沒有連接池管理,沒有 upgrade 握手,就是普通 HTTP。每個代理都認識它,每個 CDN 都能透傳它。

三個頭部搞定一切

SSE 的協議規范短得像個玩笑:

``` Content-Type: text/event-stream Cache-Control: no-cache Connection: keep-alive ```

服務器發以 data: 開頭的行,瀏覽器解析。沒有幀編碼,沒有掩碼,沒有操作碼。文本流,換行分割,HTTP 從頭到尾。

WebSocket 為了兼容 HTTP 握手,先偽裝成 HTTP,再 upgrade 成獨立協議。這個設計在 2011 年情有可原——當時很多中間件不認識 WebSocket——但現在成了歷史包袱。防火墻、負載均衡、企業代理,每多一層都可能 upgrade 失敗。

SSE 不走 upgrade,它就是 HTTP。公司內網的老舊代理?認識。需要走 CDN 邊緣緩存?可以。想加個認證中間件?標準 Cookie/Header 直接復用。

協議簡單到作弊。

自動恢復:被低估的殺手特性

WebSocket 斷線后,開發者要面對一堆決策:多久重試?退避策略用線性還是指數?重連后怎么知道漏了哪些消息?要不要服務端維護消息隊列?


SSE 的規范直接規定了自動重連,瀏覽器實現它。斷線后,瀏覽器按退避算法自己連,連上后繼續收。服務端不需要為"客戶端剛重連"這個狀態寫特殊邏輯。

當然,消息丟失問題還在。但 SSE 支持 Last-Event-ID 頭部,重連時自動帶上最后收到的消息 ID,服務端可以據此補發。這個機制是可選的,簡單場景直接忽略,復雜場景按需實現——而不是像 WebSocket 那樣,重連邏輯是必答題。

一個類比:WebSocket 像租了輛跑車,動力強勁但得自己保養;SSE 像地鐵,時刻表固定,壞了等下一班,你不用管調度。

什么時候該用 WebSocket?

不是全面替代。聊天室、多人協同編輯、實時游戲——這些需要客戶端頻繁發消息的,WebSocket 的雙向通道更自然。但問問自己:你的功能真的需要雙向嗎?

Dashboard 實時數據、CI 構建日志、股票行情、社交 Feed、進度條——這些占"實時功能"的絕大多數。它們用 SSE 更輕、更穩、代碼更少。

有個細節很多人沒注意:SSE 天然支持瀏覽器的事件流接口,可以 addEventListener 監聽特定事件類型,做路由分發。WebSocket 收到消息要自己解析路由。

另一個被忽略的點:SSE 基于 HTTP,所以能享受 HTTP/2 的多路復用。一個 TCP 連接可以承載多個 SSE 流,瀏覽器自動調度。WebSocket 一個連接就是一個連接,開多了就是資源競爭。

技術選型里,"夠用且簡單"往往勝過"強大但復雜"。

原文作者 Vivian Voss 在文末留了句話:「One rather appreciates infrastructure that does not require a babysitter.」(人總該欣賞那些不需要保姆的基礎設施。)

這句話的刻薄之處在于,它暗示了很多程序員正在做的事情——寫重連邏輯、調心跳間隔、排查代理問題——本可以不存在。不是技術深度的問題,是信息差的問題。2015 年就有的標準,2025 年還在被忽視。

下次設計實時功能前,你會先問自己"真的需要雙向嗎",還是直接 npm install ws?

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
家電三巨頭差距斷崖:美的凈利潤385億,海爾187億,格力令人意外

家電三巨頭差距斷崖:美的凈利潤385億,海爾187億,格力令人意外

有范又有料
2026-03-24 10:59:07
林毅夫:直到2035年,中國GDP依舊有8%的增長潛力

林毅夫:直到2035年,中國GDP依舊有8%的增長潛力

經濟觀察報
2026-03-25 10:14:11
國產螺絲刀在海外躥紅,在TikTok狂賣2800萬

國產螺絲刀在海外躥紅,在TikTok狂賣2800萬

跨境派Pro
2026-03-23 14:16:59
沖突加劇,日本援兵趕到,中方直接封海四天,越南警告中國別造島

沖突加劇,日本援兵趕到,中方直接封海四天,越南警告中國別造島

云上烏托邦
2026-03-24 14:50:45
美軍發布戰果,摧毀中國產戰機,伊朗空軍損失殆盡

美軍發布戰果,摧毀中國產戰機,伊朗空軍損失殆盡

愛吃醋的貓咪
2026-03-22 22:29:08
張雪峰傳奇人生揭秘:父母下崗,大學考上鄭大,第一份工作開飯店

張雪峰傳奇人生揭秘:父母下崗,大學考上鄭大,第一份工作開飯店

談史論天地
2026-03-25 07:26:54
大快人心!國家出手擒下3名華人首富,他們干的事,根本不能饒恕

大快人心!國家出手擒下3名華人首富,他們干的事,根本不能饒恕

墨印齋
2026-03-24 21:34:56
日本不再歡迎中國人?3月起日本簽證“一刀切”,華人進退兩難!

日本不再歡迎中國人?3月起日本簽證“一刀切”,華人進退兩難!

網絡易不易
2026-03-25 10:25:44
成事不足敗事有余的馬英九,又一次給國民黨惹下大禍了!

成事不足敗事有余的馬英九,又一次給國民黨惹下大禍了!

達文西看世界
2026-03-25 09:30:05
奶粉企業在公交車上投廣告:“貞潔是女孩最高貴的嫁妝”

奶粉企業在公交車上投廣告:“貞潔是女孩最高貴的嫁妝”

黃河新聞網呂梁
2026-03-25 14:12:59
暫停21天后,中遠海運集運恢復遠東至阿聯酋、沙特、卡塔爾等中東地區新訂艙業務

暫停21天后,中遠海運集運恢復遠東至阿聯酋、沙特、卡塔爾等中東地區新訂艙業務

澎湃新聞
2026-03-25 16:30:31
研究所所長被曝涉嫌猥褻下屬,信達證券回應:已暫停其一切工作,并啟動內部核查,積極配合公安工作

研究所所長被曝涉嫌猥褻下屬,信達證券回應:已暫停其一切工作,并啟動內部核查,積極配合公安工作

澎湃新聞
2026-03-25 13:50:27
“廉價的女留子,就是這種下場”,現狀被15萬人圍觀,看清了現實

“廉價的女留子,就是這種下場”,現狀被15萬人圍觀,看清了現實

妍妍教育日記
2026-03-23 20:50:12
新版人民幣已正式落地,紙幣將被取代?蘇州試點6年揭示了答案

新版人民幣已正式落地,紙幣將被取代?蘇州試點6年揭示了答案

花寒弦絮
2026-03-25 05:20:04
瑞典足協主席:我們不會抵制世界杯,但FIFA向特朗普頒和平獎有些越界

瑞典足協主席:我們不會抵制世界杯,但FIFA向特朗普頒和平獎有些越界

懂球帝
2026-03-24 20:28:07
出獄后的雷政富滄桑感襲面而來,前后對比引人唏噓

出獄后的雷政富滄桑感襲面而來,前后對比引人唏噓

霹靂炮
2026-03-14 22:49:47
日本收到最后通牒,再挑釁中國就會被徹底踢開,高市有辦法應對?

日本收到最后通牒,再挑釁中國就會被徹底踢開,高市有辦法應對?

愛下廚的阿釃
2026-03-25 14:46:01
美軍計劃增兵中東 對伊朗地面戰爭要來了?

美軍計劃增兵中東 對伊朗地面戰爭要來了?

看看新聞Knews
2026-03-24 19:12:06
CCTV5直播!國足VS世界杯魚腩 首發曝光:已定5人 邵佳一重用老將

CCTV5直播!國足VS世界杯魚腩 首發曝光:已定5人 邵佳一重用老將

侃球熊弟
2026-03-25 13:40:12
給機關事業單位退休人員發生活補貼合理合規,看看這些地方的做法

給機關事業單位退休人員發生活補貼合理合規,看看這些地方的做法

郭愛華追問教育
2026-03-25 06:25:09
2026-03-25 17:43:00
野生運營
野生運營
懂點產品,懂點AI,正在努力給平淡日子搞點新花樣。
31文章數 0關注度
往期回顧 全部

科技要聞

紅極一時卻草草收場,Sora宣布正式關停

頭條要聞

"軍工虎"譚瑞松獲死緩:搞權色交易 多次泄露內幕信息

頭條要聞

"軍工虎"譚瑞松獲死緩:搞權色交易 多次泄露內幕信息

體育要聞

35歲替補門將,憑什么入選英格蘭隊?

娛樂要聞

張雪峰經搶救無效不幸去世 年僅41歲

財經要聞

管濤:中東局勢如何影響人民幣匯率走勢?

汽車要聞

智己LS8放大招 30萬內8系旗艦+全線控底盤秀實力

態度原創

時尚
游戲
健康
本地
軍事航空

告別黑白灰,春天穿“奶油色”真的很好看

戰神新作重磅更新!徹底解決核心問題 和閃退再見

轉頭就暈的耳石癥,能開車上班嗎?

本地新聞

來永泰同安 赴一場春天的約會

軍事要聞

伊朗重申非交戰國家船只可安全通過霍爾木茲海峽

無障礙瀏覽 進入關懷版