作家
登录

通过 Node.js, Express.js 实现 HTTP/2 Server Push

作者: 来源: 2017-04-24 12:06:30 阅读 我要评论

--save 
  • npm i node-dev@3.1.1 --save-dev 
    1. /http2-node-server-push 
    2. /node_modules 
    3. index.js 
    4. package.json 
    5. server.crt 
    6. server.csr 
    7. server.key 

    然后,在 package.json 的 scripts 中添加两个脚本行,去简化敕令(node-dev、主动重载):

    1. "start""./node_modules/.bin/node-dev ."
    2. "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。

    1. const http2 = require('spdy'
    2. const logger = require('morgan'
    3. const express = require('express'
    4. const app = express() 
    5. const fs = require('fs'

    然后,设置 morgan logger 来监听办事器办事了哪些请求。

    1. app.use(logger('dev')) 

    设置主页,该页面显示了 /pushy 是我们办事器推送的页面。

    1. app.get('/'function (req, res) { 
    2.   res.send(`hello, http2! go to /pushy`) 
    3. }) 

    办事器推送只需简单的调用 spdy 实现的 res.push ,我们将文件路径名传输进去作为第一个参数,浏览器会应用这个路径名来匹配push promise 资本。res.push() 的第一个参数 /main.js 必定得跟 HTML 文件中须要的文件名相匹配。

    而第二个参数是一个可选的对象,设置了该资本的一些资本信息描述。

    1. app.get('/pushy', (req, res) => { 
    2.   var stream = res.push('/main.js', { 
    3.     status: 200, // optional 
    4.     method: 'GET', // optional 
    5.     request: { 
    6.       accept: '*/*' 
    7.     }, 
    8.     response: { 
    9.       'content-type''application/javascript' 
    10.     } 
    11.   }) 
    12.   stream.on('error'function() { 
    13.   }) 
    14.   stream.end('alert("hello from push stream!");'
    15.   res.end('<script src=http://developer.51cto.com/art/201704/"/main.js">'

        推荐阅读

        实现数据中心间互通的纽带——DCI技术

      如今的数据中间早已不是一座孤立的机房,而是一个建筑群。一个数据中间可以包含很多个分支数据中间,可以说是一个数据中间群,这些分支数据中间所处的地位不合,却可以经由过程收集互联起>>>详细阅读


      本文标题:通过 Node.js, Express.js 实现 HTTP/2 Server Push

      地址:http://www.17bianji.com/lsqh/34916.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)