其餘技術---- 服務端推送SSE

SSE是Server-sent Events的簡稱,它是HTML5中的一種規範。目前爲止那些老舊的瀏覽器是不直接支持SSE規範的,好比IE內核的瀏覽器。
咱們知道websocket能夠實現客戶端與服務端的雙向通訊。SSE這個東西是能夠實現服務端主動向客戶端進行通訊的,可是它僅僅是單向的。若是客戶端與服務器端的數據交互不是特別頻繁,那麼咱們是能夠使用SSE技術來實現的。前端

協議

Server-sent Events主要由兩部分組成。git

1.服務器端與瀏覽器端之間的通信協議
2.前端js對象EventSourcegithub

服務端若要向前端發送一個SSE,響應的類型應該爲"text/event-stream",響應文本的內容是一個事件流,固然仍是文本類型,這個看響應類型就知道。
每一個事件由類型和數據組成,同時每一個事件都有一個標識符(鍵值對的形式),不一樣事件經過車符和換行符的空行(「\r\n」)來分隔。好比:web

data: eve1 event
 
data: eve2 event
id: 0
 
event: eve
data: eve3 event
id: 1

含義:瀏覽器

  • data: 數據
  • event: 事件的類型
  • id: 事件的標識符
  • retry: 瀏覽器在鏈接斷開以後進行再次鏈接以前的等待時間服務器

    使用

  1. 咱們使用sse編寫一個push接口,用於返回SseEmitter對象,這樣前端接口請求的響應頭則會是text/event-stream
  2. SseEmitter對象真正響應給前端的事件是由SseEmitter對象的send方法來實現的(調用SseEmitter的send方法將響應給前端一個事件流)
  3. 封裝send的SseEmitter屬性(事件內容)

代碼詳情見github
https://github.com/yusonghu/ssewebsocket

相關文章
相關標籤/搜索