什麼是SSE協定
Server-Sent Events(SSE)是一種基于HTTP的協定,它允許伺服器向用戶端持續發送事件流式資料,而不需要用戶端送出請求。與輪詢(polling)和長輪詢(long-polling)等技術不同,SSE使用單個TCP連接配接來傳輸資料,并且用戶端不會關閉連接配接,會一直等待伺服器發送新的資料流。
SSE協定的特點如下:
- 輕量級:SSE協定基于HTTP協定,是以它不需要額外的協定開銷。
- 單向通信:SSE是單向通信協定,隻能從伺服器向用戶端發送資料。
- 實時性:SSE允許伺服器實時向用戶端發送資料,是以非常适合需要實時更新資料的應用程式。
- 低資源消耗:由于SSE使用單個TCP連接配接,是以它可以有效地減少網絡帶寬和伺服器資源的消耗。
- 易用性:SSE可以使用常見的Web開發架構和庫進行實作,例如JavaScript和Node.js。
在實作SSE時,可以使用以下步驟:
- 用戶端發起連接配接請求,伺服器接受請求并傳回一個包含“Content-Type: text/event-stream”的HTTP響應頭。
- 伺服器通過HTTP響應體向用戶端持續發送事件流資料。每個事件都包含一個類型(type)、一個資料(data)和一個ID(id)。
- 用戶端接收到事件流資料後,解析資料并執行相應的操作。
- 伺服器和用戶端之間的連接配接保持打開狀态,直到連接配接被關閉或者出現錯誤。
總之,SSE協定是一種輕量級、實時性高、低資源消耗的協定,非常适合需要實時更新資料的應用程式。
SSE在java spring架構中的實作
服務端使用者連接配接處理
服務端消息發送處理
頁面發起連接配接監聽資料
頁面初始化連接配接監聽服務端的實時資料
實作效果
示例實作的是頁面讀取資料的進度條效果