nginx 怎么配置 Server-Sent Events (SSE) 才不会断开连接?

2019-06-06 00:15:20 +08:00
 rizon

notelive.cc 的最新版增加了协同编辑功能。

问题 1:现在有个问题就是 nginx 代理的 sse,返回的 connection 总是显示 close。我已经配置过了还是会这样,这是为啥?

问题 2:而且连接在一段时间后就会被关闭,查了一些资料也没能解决。求助各位大佬!!

问题 3:我在服务端增加一个 ping 功能,每分钟会在流中返回一下数据可以解决这个问题,所以是不是和浏览器的设置有关??
以下是我的配置

proxy_set_header Connection "";
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 1h;
3065 次点击
所在节点    程序员
2 条回复
Lax
2019-06-06 09:00:22 +08:00
空闲连接超过超时时间会被关闭,nginx 默认设置 `keepalive_timeout 75s;`。
这个参数设置无穷大没有意义,浏览器、服务器或者两者之间的网络设备都有可能提前关闭连接。
一般要在超时时间内发送空包保持活跃,并且做好客户端重连措施
rizon
2019-06-06 13:14:23 +08:00
@Lax #1 谢谢,所以我现在做了一个每 1 分钟向客户端发送一次 ping 信息,不知道这样做是不是有些太频繁了。
就算设置了 keepalive_timeout,是不是客户端也可能无视这配置,按照自己的时间断开连接? 我就是想知道这个心跳检测的时间怎么设置合理一些?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/571309

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX