页面 SSE 连接总是被自动断开,有什么好的方式处理吗?

56 天前
 lisisi

页面和服务端建立 Server-Sent Events 连接,基本上活不过 60 秒,就被浏览器或者网络自动断开了。

服务器端设置了 12 小时的 keep-live ,前端每隔 20 秒发个心跳包,有时候管用,要是碰到国产浏览器、或者移动网络有时候还是活不下来。

以下两个方案,哪个开销更小一些?

  1. 不管当前 SSE 链接断没断,在前端定时向后端 /stream/channel/channel_id 发起建立新 SSE 连接。这样会在服务器端造成过多重复连接吗?
  2. SSE 每一阶段数据传完了在前端触发 eventSource.close(); 需要接受数据的时候,再由用户触发 ReconnectToSSE()。

碰到页面 SSE 连接总是被自动断开,还有什么好的方式处理吗?

1156 次点击
所在节点    前端开发
2 条回复
shadowyue
56 天前
轮询兜底。SSE 连不上才是正常的。断了就重连。
parkhaocer
33 天前
1. 用成熟的开源库替代原生 sse ,比如 @microsoft/fetch-event-source
2. 让后端每隔 2-5 秒向前端推送一个心跳包,心跳间隔太长可能意外中断连接

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1147828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX