当前位置:首页 >专题 >Go SSE 实时推送与断线恢复工程实践专题

Go SSE 实时推送与断线恢复工程实践专题
Go SSE 实时推送与断线恢复

Go SSE 实时推送与断线恢复工程实践专题

从 Flush、EventSource 到心跳、取消、重连与背压
SSE 用一条长期 HTTP 连接把服务端事件持续推送到浏览器,适合进度、通知和模型流式输出,但真正上线还要处理 Flush 时机、代理缓冲、客户端断线、重连幂等、心跳、超时和生产者背压。本专题从 Go net/http 与浏览器 EventSource 官方资料出发,串起可观测、可恢复的实时推送闭环。

站内 SSE 与流式推送实践

从最小接口到断线清理、超时预算与生产背压

Go 写 SSE 接口为什么浏览器收不到消息:EventSource、Flush 和超时怎么排查
文章

Go 写 SSE 接口为什么浏览器收不到消息:EventSource、Flush 和超时怎么排查

排查 SSE 响应头、EventSource、Flush 和服务端超时配置。
Go 长任务接口怎么返回进度?SSE 流式推送的最小写法
文章

Go 长任务接口怎么返回进度?SSE 流式推送的最小写法

用 SSE 为长任务持续返回进度,并处理响应写出。
Go 流式响应怎么做:ResponseController.Flush、SSE 与断开回收的取舍
文章

Go 流式响应怎么做:ResponseController.Flush、SSE 与断开回收的取舍

比较 ResponseController.Flush、SSE 和客户端断开后的资源回收。
Go 接入模型流式输出后客户端断开怎么办:取消上游请求并清理 goroutine
文章

Go 接入模型流式输出后客户端断开怎么办:取消上游请求并清理 goroutine

处理流式输出客户端断开、上游取消和 goroutine 清理。
Go HTTP 请求取消后任务会自动停吗:context 传递、超时和资源释放
文章

Go HTTP 请求取消后任务会自动停吗:context 传递、超时和资源释放

说明 Context 取消如何传递到下游任务,并避免误以为 goroutine 会自动停止。
Go HTTP 服务超时怎么配:ReadHeaderTimeout、WriteTimeout 和 IdleTimeout 实战
文章

Go HTTP 服务超时怎么配:ReadHeaderTimeout、WriteTimeout 和 IdleTimeout 实战

按请求阶段配置 HTTP 服务端的读取、写出和空闲超时。
Go worker pool 如何处理突发任务:队列背压、拒绝策略和优雅停机
文章

Go worker pool 如何处理突发任务:队列背压、拒绝策略和优雅停机

围绕队列容量、背压、拒绝和停机收口设计 worker pool。
Go http.ResponseController 有什么用?Flush、写超时和 FullDuplex 这样理解
文章

Go http.ResponseController 有什么用?Flush、写超时和 FullDuplex 这样理解

用 ResponseController 统一理解 Flush、写超时和 FullDuplex。

常见问题

覆盖 SSE 上线前最容易误判的可靠性边界

SSE 调用 Flush 后客户端一定马上收到吗?

不一定。Go 的 Flush 只把服务端和 HTTP 实现中的缓冲向下推进,代理、网关或浏览器仍可能缓冲;应检查 text/event-stream、代理配置和实际到达延迟。

浏览器断线后 SSE 会自动重连吗?

EventSource 通常会自动重连,但服务端仍需设计事件 ID、幂等消费、Last-Event-ID 或可接受的丢失窗口;业务任务也必须监听 Request.Context 并停止。

SSE 和 WebSocket 应该怎么选?

SSE 是基于 HTTP 的服务端到客户端单向事件流,浏览器接入简单并自带重连;需要双向低延迟通信、二进制帧或更强协议控制时再考虑 WebSocket。

SSE 如何避免慢客户端拖垮服务?

为事件队列设置上限,监控写出延迟和连接数,对过期或跟不上的客户端主动断开;生产者应响应 Context 取消,必要时按租户或连接设置配额。

微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码