使用Node.js+Express.js架设http2服务器是非常简单。首先在服务器端使用openssl产生密钥文件,然后在js文件中包含这个密钥文件。
$ mkdir http2-express $ cd http2-express $ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048 ... $ openssl rsa -passin pass:x -in server.pass.key -out server.key writing RSA key $ rm server.pass.key $ openssl req -new -key server.key -out server.csr
$ openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
|
下一步,初始化package.json和下载spdy和express:
npm init npm i express spdy --save
|
创建一个index.js作为端口,头部输入:
const port = 3000 const spdy = require('spdy') const express = require('express') const path = require('path') const fs = require('fs')
const app = express()
|
下一步定义Express路由:
app.get('*', (req, res) => { res .status(200) .json({message: 'ok'}) })
|
下面需要加载key和密钥文件:
const options = { key: fs.readFileSync(__dirname + '/server.key'), cert: fs.readFileSync(__dirname + '/server.crt') }
|
最后,将SSL选项和Express实例一起加载:
spdy .createServer(options, app) .listen(port, (error) => { if (error) { console.error(error) return process.exit(1) } else { console.log('Listening on port: ' + port + '.') } })
|
源码见:github
Easy HTTP/2 Server with Node.js and Express.js