gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:10:35 24 4
gpt4 key购买 nike

我在理解“自动重新连接”如何用于SSE时遇到了麻烦。

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

https://html.spec.whatwg.org/multipage/server-sent-events.html
https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events

我已经在Golang中使用 gorilla /mux实现了SSE,并且一切正常。现在到有趣的部分,我可以断开服务器的连接,但是连接将在几秒钟后神奇地恢复。我自己尚未实现任何功能,所以我不确定这是怎么发生的?

所有主要的浏览器都会尝试自动重新连接,但是我从来没有手动设置任何事件ID。浏览器会重新连接,但在断开连接期间不会接收到丢失的数据吗? (这是使用EventID可以解决的问题,但我对此没有兴趣)。即,浏览器可以在不使用EventID的情况下重新连接吗?还是其他原因使得这种“重新连接”成为可能?

最佳答案

根据规范,客户端必须发送Last-Event-Id header ,以告知服务器有关成功接收的上一个事件id的信息。仅当事件发送为 id字段为空值(不同于仅发送数据和完全省略id时),客户端上的Last-Event-Id重置(您可以将其视为大宗交易)。

请参阅https://www.w3.org/TR/2009/WD-eventsource-20090421/中的5处理模型

If the event source's last event ID string is not the empty string, then a Last-Event-Id HTTP header must be included with the request, whose value is the value of the event source's last event ID string.



稍后在第7节“解释事件流”中对此进行了很好的解释,它描述了 test-stream的实际示例,说明了客户端发送的Last-Event-Id如何受事件 id的值(和状态)影响。

关于http - 服务器发送的事件(SSE)-自动重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com