Open ccforward opened 8 years ago
HTTP/2是基于Google的SPDY协议为基础开发的新的web协议。HTTP/2算是从1991年以来HTTP的第一次重大升级。
Yahoo 旗下的 Flickr 貌似在2016年7月开始用上了HTTP2,如图
虽然 HTTP/2 是基于 SPDY 协议开发的,但是两者还是有不同点的:
HTTP2的优势:
因为我们基于node实现的h2用的是spdy模块,所以必须建立在https的基础上,先生成自签名的证书
$ mkdir h2-node $ cd h2-node $ 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 365 -in server.csr -signkey server.key -out server.crt $ rm server.pass.key
初始化 package.json 文件并添加 spdy 和 express 模块
npm init npm i express spdy --save
新建一个 index.js 文件作为应用入口
const spdy = require('spdy'); const express = require('express'); const path = require('path'); const fs = require('fs');
添加 express 并配置路由
const port = 3000; const app = express(); app.get('*', (req, res) => { res .status(200) .json({error: 0, msg: "http2 OK"}); })
加载https的证书
const options = { key: fs.readFileSync(__dirname + '/server.key'), cert: fs.readFileSync(__dirname + '/server.crt') }
最后 spdy创建服务器,并加载 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 + '.') } })
执行 node index.js 然后访问
node index.js
因为浏览器默认情况下不信任自签名的证书,所以这里点击 继续前往localhost(不安全) 即可
代码地址: https://github.com/ccforward/cc/tree/master/h2-node
你好,请问为什么我的chrome浏览器的network选项没有protocol这一列的呢?我的是chrome 54
protocol
@jrainlau
谢谢!
HTTP/2 + Node.js
HTTP/2是基于Google的SPDY协议为基础开发的新的web协议。HTTP/2算是从1991年以来HTTP的第一次重大升级。
Yahoo 旗下的 Flickr 貌似在2016年7月开始用上了HTTP2,如图
虽然 HTTP/2 是基于 SPDY 协议开发的,但是两者还是有不同点的:
HTTP2的优势:
因为我们基于node实现的h2用的是spdy模块,所以必须建立在https的基础上,先生成自签名的证书
初始化 package.json 文件并添加 spdy 和 express 模块
新建一个 index.js 文件作为应用入口
添加 express 并配置路由
加载https的证书
最后 spdy创建服务器,并加载 ssl 配置和 express 实例
执行
node index.js
然后访问因为浏览器默认情况下不信任自签名的证书,所以这里点击 继续前往localhost(不安全) 即可
代码地址: https://github.com/ccforward/cc/tree/master/h2-node