- /http2-node-server-push
- /node_modules
- index.js
- package.json
- server.crt
- server.csr
- server.key
然后,在 package.json 的 scripts 中添加两个脚本行,去简化敕令(node-dev、主动重载):
- "start": "./node_modules/.bin/node-dev .",
- "start-advanced": "./node_modules/.bin/node-dev index-advanced.js"
编写脚本
起首,创建 index.js 脚本,并惹人以及实例化依附,看算作看膳绫擎的项目目次构造。个中,我应用了 ES6/ES2015 的语法 const来声明依附,如不雅你不熟悉该声明语法,你可以进一步浏览Top 10 ES6 Features Every Busy JavaScript Developer Must Know。
- const http2 = require('spdy')
- const logger = require('morgan')
- const express = require('express')
- const app = express()
- const fs = require('fs')
然后,设置 morgan logger 来监听办事器办事了哪些请求。
- app.use(logger('dev'))
设置主页,该页面显示了 /pushy 是我们办事器推送的页面。
- app.get('/', function (req, res) {
- res.send(`hello, http2! go to /pushy`)
- })
办事器推送只需简单的调用 spdy 实现的 res.push ,我们将文件路径名传输进去作为第一个参数,浏览器会应用这个路径名来匹配push promise 资本。res.push() 的第一个参数 /main.js 必定得跟 HTML 文件中须要的文件名相匹配。
而第二个参数是一个可选的对象,设置了该资本的一些资本信息描述。
- app.get('/pushy', (req, res) => {
- var stream = res.push('/main.js', {
- status: 200, // optional
- method: 'GET', // optional
- request: {
- accept: '*/*'
- },
- response: {
- 'content-type': 'application/javascript'
- }
- })
- stream.on('error', function() {
- })
- stream.end('alert("hello from push stream!");')
- res.end('<script src=http://developer.51cto.com/art/201704/"/main.js">'
推荐阅读
如今的数据中间早已不是一座孤立的机房,而是一个建筑群。一个数据中间可以包含很多个分支数据中间,可以说是一个数据中间群,这些分支数据中间所处的地位不合,却可以经由过程收集互联起>>>详细阅读
本文标题:通过 Node.js, Express.js 实现 HTTP/2 Server Push
地址:http://www.17bianji.com/lsqh/34916.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示