页面和服务端建立 Server-Sent Events 连接,基本上活不过 60 秒,就被浏览器或者网络自动断开了。
服务器端设置了 12 小时的 keep-live ,前端每隔 20 秒发个心跳包,有时候管用,要是碰到国产浏览器、或者移动网络有时候还是活不下来。
以下两个方案,哪个开销更小一些?
- 不管当前 SSE 链接断没断,在前端定时向后端 /stream/channel/channel_id 发起建立新 SSE 连接。这样会在服务器端造成过多重复连接吗?
- SSE 每一阶段数据传完了在前端触发 eventSource.close(); 需要接受数据的时候,再由用户触发 ReconnectToSSE()。
碰到页面 SSE 连接总是被自动断开,还有什么好的方式处理吗?