gpt4 book ai didi

java - 当我们使用 servlet3 规范中提到的 AsyncContext 时,http 连接保持打开状态多长时间?

转载 作者:搜寻专家 更新时间:2023-11-01 03:48:35 25 4
gpt4 key购买 nike

当我们使用 servlet3 规范中提到的 AsyncContext 时,http 连接保持打开状态多长时间?我的一段代码是

final AsyncContext asyncContext = httpServletRequest.startAsync();
asyncContext.setTimeout(0);
asyncContexts.offer(asyncContext);
....
....

new Thread(new Runnable() {
@Override
public void run() {
try {
final BufferedReader read = facade.getStreamData();
while (read.ready()) {
httpServletResponse.setContentType("text/html");
if(i 100) {
asyncContext.complete();
}
if(Strings.isNullOrEmpty(read.readLine())) {
continue;
}
asyncContext.getResponse().getWriter().print(read.readLine());
asyncContext.getResponse().flushBuffer();
i = i + 10;
Thread.sleep(2000);
}
asyncContext.getResponse().getWriter().print("#" + 100);
asyncContext.getResponse().flushBuffer();
asyncContext.complete();
} catch (IOException e) {
throw new RuntimeException(
"Error when writing the event.", e);
} catch (InterruptedException e) {
throw new RuntimeException(
"Error when writing the event.", e);
}
} }).start();

它正在工作!当缓冲区被刷新时,内容在客户端可用。

我的问题是,此连接保持打开状态多长时间?以及服务器如何管理它,即使 header 中没有提到 keep-alive?

最佳答案

我终于得到了答案。即使不存在 keep-alive header ,服务器也会保持默认的 keep-alive。连接在该时间段内打开。 AsyncContext 继续扩展连接,直到它被手动关闭或者它没有向客户端发送数据超过保持 Activity (提到或默认)时间。因此,基本上它在客户端表现为非常慢的网络连接。

关于java - 当我们使用 servlet3 规范中提到的 AsyncContext 时,http 连接保持打开状态多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35407298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com