使用sse技术实现长链接(四) — 总结与运维

本篇作为系列结尾,总结 SSE 在生产环境的注意点与运维建议,并提供与前面三篇的跳转链接。

何时使用 SSE

  • 适用于服务器单向推送、文本为主的场景(通知、日志、进度条等)。
  • 如果需要双向实时通讯、频繁二进制交互,应选择 WebSocket。

代理与反向代理要点(nginx)

  • 禁用代理缓冲:proxy_buffering off;
  • 使用 HTTP/1.1 并允许分块传输:proxy_http_version 1.1; chunked_transfer_encoding on;
  • 清理 Connection 头:proxy_set_header Connection '';

简短示例:

1
2
3
4
5
6
7
location /sse/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection '';
proxy_buffering off;
chunked_transfer_encoding on;
}

连接数量与伸缩

  • 浏览器对单域并发连接有限制(通常 6-8 个),大量客户端场景需要水平扩展与负载均衡。
  • 可将推送任务拆分到专门的推送服务或消息中间件(如 Redis Pub/Sub)来降低单点压力。

监控与故障排查

  • 监控连接数、平均连接时长、心跳丢失率和错误率。
  • 常见问题:代理缓冲导致延迟;防火墙/负载均衡器超时;跨域问题导致连接失败。

系列导航