簡體   English   中英

服務器發送事件 (SSE) - 自動重新連接

[英]Server sent events (SSE) - automatic reconnect

我無法理解 SSE 的“自動重新連接”如何工作。

我一直在閱讀 Mozilla 和 WC3 的文檔以及其他一些討論,但我仍然不確定它是如何工作的。

https://html.spec.whatwg.org/multipage/server-sent-events.html https-事件/文檔/WebAPI/sServer.org

我已經在 Golang 中使用 gorilla/mux 實現了 SSE,並且一切正常。 現在到了有趣的部分,我可以斷開與服務器的連接,但連接會在幾秒鍾后神奇地恢復。 我自己沒有為此實現任何功能,所以我不確定這是怎么發生的?

所有主流瀏覽器都會嘗試自動重新連接,但我從未手動設置任何事件 ID。 瀏覽器會重新連接,但不會收到斷開連接期間發送的任何丟失數據嗎? (這就是使用EventID可以解決的問題,但我對它沒有興趣)。 即,瀏覽器是否可以在不使用 EventID 的情況下重新連接? 或者是其他什么東西使這種“重新連接”成為可能?

根據規范,客戶端必須發送 Last-Event-Id header 來告訴服務器它成功接收到的最后一個事件id 僅當使用具有空值的id字段發送事件時(與僅發送數據和完全省略id不同)Last-Event-Id 在客戶端重置(您可以將其視為塊交易)。

參見 https 中的第 5 節處理Model://www.w3.org/TR/2009/WD-eventsource-20090421/

如果事件源的最后一個事件 ID 字符串不是空字符串,則 Last-Event-Id HTTP header 必須包含在請求中,其值是事件源的最后一個事件 ID 字符串的值。

稍后在第 7 節解釋事件 Stream 中有很好的解釋,描述了客戶端發送的 Last-Event-Id 如何受事件id的值(和存在)影響的test-stream實際示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM