http2-push-assets

0.1.2 • Public • Published

HTTP/2 Push-Assets (for Node.js)

Includes both Client & Server implementations of Internet Draft HTTP/2 Push-Assets.

Other Resources

Client

  var request = require('http2-push-assets').http.request;
  var options = {
    method: 'GET',
    url: '/some/resource',
    cachedFiles: undefined // unique to Push-Assets
  };
  request(options, function(err, res, body, children) {
    // do something with document and its children
  });

Client Options

TODO

Server

  var connect = require('connect');
  var http2 = require('http2');
  var connectPushAssets = require('http2-push-assets').http.connect;
  var connectStatic = require('connect-static');
 
  var app = connect();  
  
  // enable HTTP/2 Push-Assets for any html requests
  app.use(connectPushAssets(app, {
    forcePush: false, // only enable for demo purposes, to force push on non-compatible browsers
    dynamic: {
      pushAttribute: 'data-push-asset', // match this
      includeTags: [ 'script', 'link[rel=stylesheet]', 'link[type=text/css]', 'img', 'image' ] // or match that
    }
  });
 
  // server static files with HTTP/2 Push-Assets enabled  
  connectStatic({
    dir: path.resolve(__dirname, './static'),
    aliases: [
      ['/', '/index.html'],
    ]
  }, function(err, middleware) {
    app.use(middleware);
 
    http2.createServer({
      cert: fs.readFileSync(path.resolve(__dirname, './ssl/public.crt')),
      key: fs.readFileSync(path.resolve(__dirname, './ssl/private.key'))
    }, app).listen(443);
  });

Server Options

TODO

Readme

Keywords

none

Package Sidebar

Install

npm i http2-push-assets

Weekly Downloads

2

Version

0.1.2

License

MIT

Last publish

Collaborators

  • asilvas