如何在JAVA中创建支持HttpServer的长连接?

时间:2019-03-18 06:49:53

标签: java http

我注意到http1.1支持长连接。 如果Keep-Alive为true,则在完成请求后tcp连接将不会关闭。 但是,如果我尝试创建服务器,请使用ServerSocket。 每当我处理请求时,我都会将响应发送到客户端,然后我必须关闭套接字(关闭tcp连接) 那么如何重用tcp连接呢?

我必须关闭套接字的原因是浏览器必须知道连接已完成。

这样的代码

ServerSocket serverSocket; 
        while (true){
            Socket socket = serverSocket.accept();

            thread{
                request = socket.readRequest();
                socket.writeHttpResponse();
                socket.close();
            }
        }

1 个答案:

答案 0 :(得分:0)

实际上,我们不必关闭套接字。 当我们发送HTTP响应时,浏览器将根据Request Header中的Content-Length知道响应的结束。 完成向浏览器的sendind响应后,如果我们保持套接字输入,则只有使用1.1 proto并具有HeaderConnection:Keep-Alive的情况下,我们才能继续从该套接字获取enxt请求。