steal-push

1.2.1 • Public • Published

steal-push

Build Status npm version

steal-push is server middleware for HTTP2 push. Using steal-tools you can create a bundle manifest that species which modules need to be loaded for each bundle. steal-push uses this manifest file to push files when a given route is used.

steal-push also works with HTTP1 servers, adding a Link header which tells the browser to begin fetching/parsing the assets.

Install

npm install steal-push --save

Setup

Before using steal-push you must generate a bundle manifest from steal-tools like so:

stealTools.build(config, {
    bundleManifest: true
});

Usage

steal-push can be used in plain Node web servers, or in express apps.

Node

const http2 = require("spdy");
const stealPush = require("steal-push");
 
const pushMain = stealPush("main");
const pushOrders = stealPush("orders");
 
 
function app(req, res) {
  if(req.url === "/") {
    pushMain(req, res);
    res.send("<body>Hello world!</body>");
  } else {
    pushOrders(req, res);
    res.send("<body><h1>Orders</h1> ... </body>");
  }
}
 
 
spdy.createServer({
  key: fs.readFileSync("path/to/key.pem"),
  cert: fs.readFileSync("path/to/cert.pem"),
  spdy: {
    protocols: ["h2", "http/1.1"]
  }
}, app).listen(8080);
 

Express

const express = require("express");
const fs = require("fs");
const stealPush = require("steal-push");
const spdy = require("spdy");
 
const app = express();
const server = spdy.createServer({
  key: fs.readFileSync("path/to/key.pem"),
  cert: fs.readFileSync("path/to/cert.pem"),
  spdy: {
    protocols: ["h2", "http/1.1"]
  }
}, app);
 
app.get("/",
  stealPush("main"),
  function(req, res){
    // Resources have already been pushed, just send the html
    res.send("<body>Hello world!</body>");
  });
 
app.get("/order/details",
  stealPush("orders"),
  function(req, res){
    res.send("<body><h1>Orders</h1> ... </body>");
  });
 
server.listen(8080);

StealPush constructor

The StealPush constructor can be used to configure things such as the server root, and the location of the manifest file. Typical usage looks like:

const StealPush = require("steal-push").StealPush;
 
const stealPush = new StealPush({
    manifest: "dist/bundles.json",
    root: __dirname + "/assets",
    serverRoot: "/app"
});
 
app.get("/",
    stealPush.for("main"),
    function(req, res){
        ...
    });

StealPush#for

The for() method on the StealPush object is used to create a function that takes a request and response object.

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i steal-push

Weekly Downloads

0

Version

1.2.1

License

MIT

Last publish

Collaborators

  • matthewp