Server-Sent-Events-Simple-Demo

Repository透過Server-Sent-Events(SSE)來實現Golang Server主動推送訊息給Web Client

什麼是SSE

特性:

  • 透過HTTP Stream的特性,實現Server主動推播的功能
  • HTML5規範原生支持
  • 瀏覽器端已原生實作斷線時的retry connection handle

場景:

  • 天氣即時佈告欄推播
  • 聊天室: 有許多人認為聊天室就用Websocket即可,但Websocket傳遞訊息的方式非常簡單,無法像Restful API擁有4xx等Error Code,所以要怎麼表示這些錯誤要開發者手動實作。如果透過SSE推播 + Restful API取值,就可以善用Restful APIError Code特性來達到聊天效果。甚至搭配對Protocol更嚴謹的GRPC-Web也是很好的方案。

需要安裝

  • docker
  • docker-compose

怎麼運作?

  1. docker-compos up
  2. 瀏覽器連接至localhost:5000

流程

解釋

整體我都用註釋寫在code裡面了,主要在此兩個檔案:

參考