消息提醒別再用 WebSocket 和輪詢,有更好的方案SSE!
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
概述前端向后端請求數(shù)據(jù)常規(guī)來說都是使用 http 連接,除非是實時性非常高的項目,例如IM系統(tǒng)等需要使用到WebSocket。 但是項目中有時候存在尷尬的場景:
這種實時性比較高,但是數(shù)據(jù)量比較小的內(nèi)容,使用 http 輪詢會讓系統(tǒng)增加非常多的資源損耗,而使用 WebSocket 則顯得非常沒必要。 所以 SSE 應(yīng)運而生。 原理
其實說白了還是 http 連接,不同的是這是一個長連接,并且返回數(shù)據(jù)的格式不太一樣,僅此而已。 SSE采用事件流格式數(shù)據(jù),每條消息由一行或多行組成,每一行都包含字段名和值,用冒號分隔。 并且 SSE 內(nèi)置的自動重連機制。如果由于任何原因連接斷開,瀏覽器會自動嘗試重新建立連接。 開發(fā)服務(wù)端服務(wù)端主要是需要修改請求頭,其他的就是修改一下推送信息機制。
客戶端通過 EventSource 類訪問接口,實現(xiàn)一下數(shù)據(jù)回傳以后的邏輯。
結(jié)論其實在項目中使用 SSE 要比 WebSocket 快很多,這里說的是開發(fā)效率。 由于 SSE 是單向通信,一般來說要比 WebSocket 占用的資源更少。目前 SSE 我使用過的場景只有一個,就是已讀未讀消息的更新。 當(dāng)然,有人說使用 SSE 只是將客戶端的輪詢換到了服務(wù)端,但其實并非如此。一個最根本的區(qū)別在于,輪詢即使空數(shù)據(jù)客戶端也要請求,而SSE則是有數(shù)據(jù)的時候向客戶端推送(例子不是)。 閱讀原文:原文鏈接 該文章在 2025/4/27 9:39:58 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |