When we use the AsyncContext mentioned in the servlet3 specification, how long does the HTTP connection remain open?

When we use the AsyncContext mentioned in the servlet3 specification, how long does the HTTP connection remain open? My piece of code

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();

He works! and when the buffer is buffered, the content is available on the client side.

My question is: how long does this connection remain open ? and how does the server manage it, even if the header does not indicate persistence?

+4
source share
1 answer

- . keep-alive , . . AsyncContext , , ( ). , .

0

Source: https://habr.com/ru/post/1628823/


All Articles