如何为Server-Sent Events添加重试事件实现客户端每5秒重连
SSE 5秒自动重连实现方法
SSE标准协议原生支持重连间隔配置,无需额外编写客户端重连代码,只需要在服务端事件流中返回retry字段,遵循标准的SSE客户端(包括浏览器原生EventSource)就会自动按照指定间隔在连接断开后重连。
配置规则
retry字段的单位为毫秒,要实现5秒重连,设置值为5000即可- 该字段只需要在连接建立后、发送第一条业务数据前返回一次,就会对当前连接生命周期内的所有重连行为生效,无需每次推送消息都携带
- 原有代码中1分钟后主动关闭连接的逻辑,会正常触发客户端按配置的间隔发起重连
修改后的代码
public void Message() { Response.ContentType = "text/event-stream"; // 声明客户端重连间隔为5秒 Response.Write("retry: 5000\n\n"); Response.Flush(); DateTime startDate = DateTime.Now; while (startDate.AddMinutes(1) > DateTime.Now) { Response.Write(string.Format("data: {0}\n\n", DateTime.Now.ToString())); Response.Flush(); System.Threading.Thread.Sleep(1000); } Response.Close(); }
注意:如果你使用的是自定义SSE客户端、没有遵循标准协议实现自动解析
retry字段的逻辑,只需要在连接断开、请求异常的回调中添加5秒定时器,定时器触发时重新建立SSE连接即可。
内容的提问来源于stack exchange,提问作者Shehan Pathirathna
相关产品推荐
相关产品推荐

