com.sun.net.httpserver.HttpServer 是否支持单连接管道?它似乎并行处理多个客户端,但单个连接的请求正在串行执行。
这是否准确,如果是,有没有办法解决这个问题?
com.sun.net.httpserver.HttpServer 是否支持单连接管道?它似乎并行处理多个客户端,但单个连接的请求正在串行执行。
这是否准确,如果是,有没有办法解决这个问题?
符合 HTTP 1.1 的 HTTP 服务器应该支持流水线。请注意,客户端也应该支持流水线。
根据httpserver
API 提供了 RFC 2616 (HTTP 1.1) 和 RFC 2818 (HTTP over TLS) 的部分实现。
似乎暗示com.sun.net.httpserver.HttpServer
不完全支持HTTP1.1。
HttpURLConnection
不支持流水线,所以我倾向于认为com.sun.net.httpserver.HttpServer
也不支持流水线。
你说你做了一些测试。你是怎么测试这个的?
更新:
从注释看来,流水线是受支持的。
如果,如您所说,您通过管道发送请求,则响应应根据请求的到达返回(与完成每个请求所需的时间无关,即有些请求比其他请求快)。
HTTP 流水线意味着非常简单的事情:客户端可以将下一个请求写入连接,而无需读取上一个响应。
任何http服务器都不支持流水线真的很难。它必须向前看,如果它发现超出当前请求的可用字节,它需要中止......但这很荒谬,没有人这样做。
这与服务器如何处理请求无关 - 串行或并行。并行做当然更难,也有一些问题需要解决。