mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-04 00:03:59 +00:00
fix: SSE 心跳直接写 w+flush(事件密集/队列满仍保活长连接)
- 原心跳经 writeCh 发送, 事件密集时队列满被 drop, 远程 nginx 网关长时间无字节导致 504/半开 - 改为主循环直接 Fprintf(w, ": heartbeat\n\n") + Flush, 绕过 writeCh, 保证 15s 恒有心跳 - 对应 pi-desktop: GUI 回复丢失(SSE 3分钟被 ERR_INCOMPLETE_CHUNKED_ENCODING 切断)
This commit is contained in:
@ -1291,10 +1291,12 @@ func (h *Handler) handleChatEvents(w http.ResponseWriter, r *http.Request) {
|
|||||||
case <-done:
|
case <-done:
|
||||||
return
|
return
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
select {
|
// 心跳直接写 w 并 flush(绕过 writeCh,事件密集/队列满时也能保活长连接,
|
||||||
case writeCh <- ": heartbeat":
|
// 避免远程 nginx 网关因长时间无字节而 504/半开)。
|
||||||
default:
|
if _, err := fmt.Fprintf(w, ": heartbeat\n\n"); err != nil {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
flusher.Flush()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user