美文网首页
Express 开启HTTP2

Express 开启HTTP2

作者: YoungEvita | 来源:发表于2022-11-01 20:22 被阅读0次

前言

需要服务端传输时时候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);
}
  1. 其中用到的server.key 和server.crt 是直接使用了node-on-http2项目中的,这个项目中也有expres和koa的示例,可以直接下载,npm install ,然后运行查看效果。
  2. 也可参考证书生成步骤中的方式生成证书。

3. 证书生成步骤

  • 注意事项
  1. linux中输入下列代码,如果openssl不能使用的话,安装下,先看注意事项在来执行, 依次输入如下命令即可
  2. openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
    其中\color{red}{x} 需要时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 
  • 操作步骤


    操作步骤.png
  • 注意事项中错误提示


    图1 - 报错.png

4. 运行时出现的问题

Q: 在设置完之后,项目重启之后,在浏览器访问https://localhost:3000 的时候出现了错误,具体如下

node报错.png
A : 参考解决方法,把之前的node版本降低到了 10.11.0,然后重启运行解决。

5. 页面效果

查看协议.png

如果chrome浏览器下面没有协议一栏,鼠标移至两个标题之间,右键调出协议类型,即可显示。

i调出协议类型.png

参考

bugs
node-on-http2
HTTP2相关协议详解(EXPRESS中开启HTTP2流程)

相关文章

网友评论

      本文标题:Express 开启HTTP2

      本文链接:https://www.haomeiwen.com/subject/hohdtdtx.html