V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lisisi
V2EX  ›  前端开发

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

  •  
  •   lisisi · 39 天前 · 1082 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    2 条回复    2025-08-18 18:01:56 +08:00
    shadowyue
        1
    shadowyue  
       39 天前   ❤️ 1
    轮询兜底。SSE 连不上才是正常的。断了就重连。
    parkhaocer
        2
    parkhaocer  
       16 天前
    1. 用成熟的开源库替代原生 sse ,比如 @microsoft/fetch-event-source
    2. 让后端每隔 2-5 秒向前端推送一个心跳包,心跳间隔太长可能意外中断连接
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1415 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:53 · PVG 07:53 · LAX 16:53 · JFK 19:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.