V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX  ›  程序员

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

  •  
  •   rizon ·
    othorizon · 2019-06-06 00:15:20 +08:00 · 3215 次点击
    这是一个创建于 2001 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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;
    
    2 条回复    2019-06-06 13:14:23 +08:00
    Lax
        1
    Lax  
       2019-06-06 09:00:22 +08:00
    空闲连接超过超时时间会被关闭,nginx 默认设置 `keepalive_timeout 75s;`。
    这个参数设置无穷大没有意义,浏览器、服务器或者两者之间的网络设备都有可能提前关闭连接。
    一般要在超时时间内发送空包保持活跃,并且做好客户端重连措施
    rizon
        2
    rizon  
    OP
       2019-06-06 13:14:23 +08:00
    @Lax #1 谢谢,所以我现在做了一个每 1 分钟向客户端发送一次 ping 信息,不知道这样做是不是有些太频繁了。
    就算设置了 keepalive_timeout,是不是客户端也可能无视这配置,按照自己的时间断开连接? 我就是想知道这个心跳检测的时间怎么设置合理一些?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5353 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:19 · PVG 17:19 · LAX 01:19 · JFK 04:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.