目标
实时看板的事件流约一分钟后断开,即使安静期本应保持连接。本配方用 curl -N 观察原始流的注释心跳节奏,对照代理的空闲超时,找出断连原因,并把心跳周期设置到低于最短空闲超时,从而保持长连接;同时在客户端处理重连与 Last-Event-ID 补发。
步骤要点
- 用 curl -N 观察原始 SSE 流的心跳节奏。
- 把心跳周期设到低于最短空闲超时。
- 在客户端实现断线重连与 Last-Event-ID 补发。
- 把心跳放到独立定时器,避免被慢处理拖垮。
curl -N -s https://api.example.com/events | \
awk '{ print strftime("%H:%M:%S"), $0; fflush() }'
排错提示
- 断线重连需处理补发,否则会丢事件。
- 高负载下心跳可能被业务处理饿死。
- HTTP/2 多路复用会改变超时行为。
适用边界
- 心跳流量随连接数线性增长。
- 不负责持久化事件供重连补发。