【发布时间】:2021-09-24 07:01:22
【问题描述】:
我很困惑,因为在使用 Jetty 11 时从 HTTP/1.1 升级到了 HTTP/2。
AFAIK,HTTP/2 使用stream,但以防万一,请求已从 1.1 升级到 2,curl 也告诉
升级后将流缓冲区中的 HTTP/2 数据复制到连接缓冲区:len=0
但是,另一方面,handler 的实现方式如下(根据 Jetty 的文档)
public class DummyHandler extends AbstractHandler {
@Override
public void handle(String target, Request jettyRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
jettyRequest.setHandled(true);
response.setStatus(HttpStatus.OK_200);
response.setContentType("text/html; charset=UTF-8");
response.getWriter().write(
"<!DOCTYPE html>" +
"<html>" +
"<head>" +
" <title>Jetty Hello World Handler</title>" +
"</head>" +
"<body>" +
" <p>Hello World</p>" +
"</body>" +
"</html>"
);
}
}
所以,这意味着request和response仍然是HTTP/1.1,并且从1.1升级到2没有任何好处,因为上面的代码没有处理HTTP2的stream。
我的问题是如何编写处理 HTTP2(升级后)的handler 或如何编写处理程序来处理 HTTP2 请求?我检查了 Jetty 的文件,但找不到任何线索。谢谢。
【问题讨论】: