瀏覽器即時事件

只需要伺服器往下推,先選 SSE。

SSE 使用一般 HTTP,瀏覽器原生 EventSource 會自動重連;WebSocket 適合既有基礎設施要求升級連線的情境。在 MsgMesh,兩者都只負責下行,發布一律走 HTTP。

快速選擇

SSE 比較簡單;WebSocket 比較能配合既有網路棧。

專案SSEWebSocket
方向伺服器 → clientMsgMesh 只提供伺服器 → client;上行 frame 會被丟棄
瀏覽器原生重連EventSource 內建沒有;官方 SDK 會處理
續傳 cursorLast-Event-ID 或 from 引數使用 resume 模式與 from 引數
Node.jsJavaScript SDK 的 stream() 目前只支援瀏覽器瀏覽器或 Node 22+
適合通知、儀錶板、任務進度、一般即時畫面SSE 被網路裝置擋下,或團隊已有 WebSocket 運維經驗

歷史與續傳

先補歷史,再從同一個 cursor 接上即時。

讀取最近歷史

history API 回傳最近事件與 resume_from;它是交給即時連線的接力點,不是下一頁遊標。

用 cursor 開啟即時流

SSE 使用 Last-Event-ID 或 from;WebSocket 的 resume 模式也使用 from。官方 SDK 會儲存並帶回 cursor。

邊界重疊時去重

at-least-once 允許少量重複。官方 SDK 依 partition cursor 去重;直接使用原生 API 時要自己處理。

補不完整就重建狀態

超過保留期或單次 5,000 則重播上限時會收到 msgmesh-resync;應用必須從自己的業務系統重建快照。

瀏覽器安全

不要把長期 API 金鑰放進前端。

01

後端保管長期金鑰

瀏覽器程式與網路請求都能被檢視,長期金鑰不應出現在 bundle、HTML 或 localStorage。

02

簽發短期降權 token

由你的 token-broker 換發最長 15 分鐘的 token,並限制可用操作、topic 與 room。

03

讓 SDK 負責換新

提供 token callback 後,SDK 會在到期前更新,並在重連時使用新的 token。

延伸閱讀

先用公開 Demo 比較兩條連線。

不需註冊;切換協議後傳送一筆事件即可觀察差異。

實際切換 SSE/WebSocket →