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