服务器发送事件(SSE)--自动重新连接

问题描述 投票:0回答:1

我不明白SSE的 "自动重新连接 "是如何工作的。

我一直在阅读Mozilla和WC3的文档以及其他一些讨论,但我仍然不知道它是如何工作的。

https:/html.spec.whatwg.orgmultipageserver-sent-events.html。https:/developer.mozilla.orgen-USdocsWebAPIServer-sent_events。

我已经在Golang中使用gorillamux实现了SSE,一切正常。现在到了有趣的部分,我可以中断与服务器的连接,但几秒钟后连接会神奇地恢复。我自己还没有实现任何功能,所以我不清楚这是怎么发生的?

所有主要的浏览器都会尝试自动重新连接,但是我从来没有手动设置任何事件ID。浏览器会重新连接,但只是没有收到断开连接时发送的任何丢失的数据吗?这就是使用EventID可以解决的问题,但我对此没有兴趣)。即,如果不使用EventID,浏览器能否重新连接?或者说,会不会是其他什么原因使这个 "重新连接 "成为可能?

http go server-sent-events
1个回答
1
投票

根据规范,客户端必须发送Last-Event-Id头来告诉服务器最后的事件。id 它成功地收到了。只有当事件被发送 id 字段为空(不同于只发送数据,而忽略了 id 完全)在客户端重置最后一个事件的ID(你可以把它看作是块交易)。

参见第5节处理模型中的 https:/www.w3.orgTR2009WD-eventsource-20090421

如果事件源的最后一个事件ID字符串不是空字符串,那么请求中必须包含一个Last-Event-Id HTTP头,其值就是事件源最后一个事件ID字符串的值。

在后面的第7节解读事件流中有很好的解释,描述了在 test-stream 关于客户端发送的Last-Event-Id如何受到事件值(和存在)的影响的实际例子。id.

© www.soinside.com 2019 - 2024. All rights reserved.