前言
需要服务端传输时时候HTTP2。之前有使用express来搭建简单的后端服务器,再此基础上所以使用spdy来实现
实践
1. 安装spdy
npm install spdy
2. 主要代码
var app = require('../app'); // 这个文件主要是var app = express(); 的一些设置
const fs = require('fs')
var spdy = require('spdy')
/**
* Create HTTP server.
*/
const options = {
key: fs.readFileSync(__dirname + '/server.key'),
cert: fs.readFileSync(__dirname + '/server.crt'),
spdy: {
protocols: ['h2']
}
}
var server = spdy.createServer(options ,app)
server.listen(port, onListening)
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
- 其中用到的server.key 和server.crt 是直接使用了node-on-http2项目中的,这个项目中也有expres和koa的示例,可以直接下载,
npm install
,然后运行查看效果。- 也可参考证书生成步骤中的方式生成证书。
3. 证书生成步骤
- 注意事项
- linux中输入下列代码,如果openssl不能使用的话,安装下,先看注意事项在来执行, 依次输入如下命令即可
openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
其中 需要时4-1024个字符,不然会报图1中的错误
- 生成文件的命令
openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
openssl rsa -passin pass:x -in server.pass.key -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -sha256 -days 3650 -in server.csr -signkey server.key -out server.crt
-
操作步骤
-
注意事项中错误提示
4. 运行时出现的问题
Q: 在设置完之后,项目重启之后,在浏览器访问https://localhost:3000 的时候出现了错误,具体如下
A : 参考解决方法,把之前的node版本降低到了 10.11.0,然后重启运行解决。
5. 页面效果
如果chrome浏览器下面没有协议一栏,鼠标移至两个标题之间,右键调出协议类型,即可显示。