我有一个接受text/event-stream
的端点,它基本上会发送两种不同类型的事件:stats
和result
。当服务器发送result
事件并关闭连接时。
问题在于浏览器由于sse的设计而重试连接。为了防止这种情况,我将重试值设置为更高的数字,例如60000,并在获得结果时关闭客户端中的连接。
问题是,如果延迟很高,Chrome会向服务器发送多个请求(它在localhost上没有问题)。 Safari和Firefox的工作没有问题。在Chrome中,网络标签上只有一个请求,所以我不认为Chrome会因为请求超时而尝试连接服务器。它也不会等待服务器关闭第一个请求,因为发送第二个请求。什么可能会导致Chrome中出现此问题?
注意:服务器发送请求的端点和来源不同。对于正常的HTTP请求,Chrome还会发送OPTIONS请求以查找权限,但对于SSE,它不会发送OPTIONS预检请求,但我不确定这是一个问题,因为SSE是GET请求。
答案 0 :(得分:0)
此问题是由Google Data Saver扩展程序引起的。我没有检查请求是来自Google的服务器,还是只是再次触发相同请求的浏览器,但禁用该扩展程序解决了这个问题。