jetty http/2 保持推送流打开

jetty http/2 keep push stream open

对我所拥有的内容的简短解释。

  1. 我有一个服务器和一个客户端
  2. 客户端发出 GET 请求
  3. GET Request的流作为Push Stream
  4. 服务器在单个线程中通过此流向客户端推送消息

问题是,当我 30 秒没有发送数据时,客户端似乎会自动关闭流。

我已经将超时从 30 秒设置为 LONG.MAX_VALUE,方法是:

stream.setIdleTimeout(Long.MAX_VALUE);

现在我已经实现了一个 "Heartbeat-Workaround" 每 20 秒推送一个简单的字符串,所以我避开了超时。

我只想知道这是否是唯一的方法。或者,如果我必须更改一些我没有找到的设置。

感谢您的每一个回答。

此致!

您似乎在进行反向 HTTP 长轮询,这确实需要 "heart-beat" 以避免流或连接因空闲超时而关闭。

通常最好进行常规的 HTTP 长轮询(即客户端发送心跳),因为它允许服务器更快地检测断开连接的客户端。

但是,如果您想执行服务器推送消息传递,最好使用 CometD 等解决方案。