When we use AsyncContext mentioned in servlet3 specification, how long do the http connection remains open? My piece of code is
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();
It is working! and as the buffer is flushed, content is available in client side.
My question is, how long this connection remains open? and how the server manages it even if there is no keep-alive mentioned in the header?