本文使用node.js创建一个可以调试和验证http2服务的代码。
首先创建一个npm环境,并按照http2模块
$npm init
$npm i http2 --save
其次创建证书(主流浏览器仅仅支持tls加密传输,因此要求服务器必须使用证书):
$openssl req -new -newkey rsa:2048 -nodes -keyout localhost.key -out localhost.csr
$openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
然后执行如下代码:
var https = require('http2');
var fs = require('fs');
var options = {
key: fs.readFileSync('./localhost.key'),
cert: fs.readFileSync('./localhost.crt')
};
require('http2').createServer(options, function(request, response) {
response.end('Hello HTTP2.');
}).listen(8080);
使用curl验证协议:
curl https://localhost:8080 -k -I
输出:
HTTP/2 200
date: Tue, 23 Aug 2016 09:18:35 GMT
curl的参数-I表示仅仅显示HTTP header,-k表示忽略因为服务器使用自签名证书而发出的警告。输出中的HTTP/2指明协议为HTTP/2。如果遇到问题,参考文档https://simonecarletti.com/bl...
打开浏览器,访问https://localhost:8080,忽略安全警示,然后看到输出:
Hello HTTP2.
另外一个验证的方法,是打开浏览器的devtools,查看protocols,看到h2。这说明http2已经在本次通讯中得到启用。
我使用的环境为:
$ node -v
v5.0.0
curl --version
curl 7.50.1 。。。。。
版本很重要。不对的版本可能会有不少问题,请留意。
关于
作者:刘传君
创建过产品,创过业。不好动,读书机器。
可以通过 1000copy#gmail.com 联系到我
出品
http小书 http://www.ituring.com.cn/boo...
Git小书 http://www.ituring.com.cn/boo...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。