我想知道 Spring WebClient 是否使用 HTTP/2。我怎么能确定呢?
3 回答
服务器支持 HTTP/2
从 Spring Framework 5.1 (Reactor Netty 0.8) 开始,该服务器也支持 HTTP/2。JDK9+ 部署将支持该协议,而无需更改特定的基础架构。
Reactor 是 Spring WebClient 使用的底层 http 客户端。从 Spring Framework 5.1 开始,它支持 HTTP/2。
另请参阅Spring Framework:HTTP/2 支持以获取概述。
每个连接协商 HTTP/2
您的请求连接是使用 HTTP/2 还是 HTTP/1.1 是使用ALPN协商每个客户端和服务器之间的连接。服务器显示它支持的 http 版本,然后如果两个部分都支持,则客户端选择 HTTP/2。这是通过握手中的 TLS 完成的,因此在不终止 TLS 连接的情况下无法检测到它。
我在stackoverflow上看到了这个答案:
reactor.ipc.netty.channel.ChannelOperationsHandler 为您完成。只需将您的日志系统配置为该类以在 DEBUG 级别进行日志记录。
输出类似于:
2017-11-23 12:52:04.562 调试 41449 --- [ctor-http-nio-5] rinchannel.ChannelOperationsHandler : [id: 0x9183d6da, L:/127.0.0.1:57681 - R:localhost/127.0.0.1: 8000] 写入对象 DefaultFullHttpRequest(decodeResult:成功,版本:HTTP/1.1,内容:UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0)) GET /api/v1/watch/namespaces/default/events HTTP/ 1.1
也许我错了,但 HTTP/1.1 不是您想要的输出吗?如果是这样,请检查此线程: