我无法弄清楚为什么chrome和node-http2服务器之间的下一次协议协商失败.我的怀疑是自签名证书或ALPN/NPN支持问题.所以我转向 golang HTTP/2实现.相同的设置工作完美,我看到单个多路复用TCP连接(chrome - > golang)
我一直在阅读关于HTTP/2以及它如何解决HTTP/1.1的延迟问题,每个主机使用单个多路复用TCP连接,所以我决定尝试一下.
tcptrack窗口显示已建立4个连接.因此浏览器为图像和css/js请求打开了不同的连接.
我使用tcpdump得到类似的输出.供参考使用tcptrack命令
tcptrack -d -i eth0 -r 3600 port 8989
和tcpdump也显示类似的输出
tcpdump -i eth0 -nns 0"dst port 8989和tcp [tcpflags] == tcp-syn"
服务这些文件的简单的一体化http服务器如下所示(相关代码)
(function(){
...........
var server = http.createServer(function(request, response) {
..........
fs.readFile(filetoRet, function (err,data) {
if(filePath.indexOf(".jpg") >-1){
response.writeHead(200, {"Content-Type": "image/jpg"});
}.....
response.write(data);
response.end();
});
});
server.listen(8989);
})()
Run Code Online (Sandbox Code Playgroud)
在此之后我尝试使用http/2.
因此,这仍然显示正在进行多个TCP连接.此外,如果我增加html中的图像数量,连接数会增加.
所以我不知道怎么读这个.这是HTTP/2应该如何表现(或者这是一个chrome bug)?有没有更好的方法来使用简单的http/2客户端服务器可视化HTTP/2增益?
注意:我正在为HTTP/2服务器使用自签名证书,因此chrome在继续访问页面之前会发出警告,可能那些已关闭的连接代表它但我不认为它会影响协议请求页面及其组件的方式
感谢大家耐心阅读本文并感谢任何建议.
msingh
PS:Wireshark TCP捕获也不例外.只是我发现在Wireshark中隔离流量更难,所以使用了tcpdump和tcptrack. …