https://github.com/stealjs/steal-push
HTTP/2 for StealJS projects
https://github.com/stealjs/steal-push
Last synced: 2 months ago
JSON representation
HTTP/2 for StealJS projects
- Host: GitHub
- URL: https://github.com/stealjs/steal-push
- Owner: stealjs
- License: mit
- Created: 2017-07-20T14:18:46.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2019-06-19T19:33:59.000Z (almost 6 years ago)
- Last Synced: 2025-03-08T20:15:58.454Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 17.6 KB
- Stars: 1
- Watchers: 7
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE.md
Awesome Lists containing this project
README
# steal-push
[](https://travis-ci.org/stealjs/steal-push)
[](http://badge.fury.io/js/steal-push)**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](https://w3c.github.io/preload/#server-push-(http/2)) 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](https://stealjs.com/docs/steal-tools.BuildOptions.html) from steal-tools like so:
```js
stealTools.build(config, {
bundleManifest: true
});
```## Usage
steal-push can be used in plain Node web servers, or in express apps.
### Node
```js
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("Hello world!");
} else {
pushOrders(req, res);
res.send("Orders
... ");
}
}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
```js
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("Hello world!");
});app.get("/order/details",
stealPush("orders"),
function(req, res){
res.send("Orders
... ");
});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:
```js
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