客户端 okhttp/3.4.1
http2.0协议本身并不要求基于https,但是浏览器,服务器都要求http2.0 over https,毕竟https是大势所趋嘛。想体验2.0的低延迟,先把https做好。
因此,使用非加密的http2.0需要对okhttp源码进行修改,修改起来并不复杂,我的策略是在协议为http时,判断host,如果是我们的域名xxx.suning.com,协议返回HTTP_2。
服务端 nginx/1.10
以前总是认为,http2.0必须且只能配置在server的443端口,配置在80端口,肯定报错。经过实践,应该是这样的,http2.0不能配置在80端口,其他所有端口都可以,比如81、82、83、443。。。。
测试时,在81端口配置了http2.0。客户端访问http://xxx.suning.com:81,协议为h2。
作用
对于单条接口来说,如果去掉SSL握手过程,可以减少大概180ms。
现在依然没有强制执行https,非加密的http2.0仍有用武之地。