Express http 2 server push Express http 2 server push express express

Express http 2 server push


You need to explicitly tell your express server which resources to push. Look here for a decent run through of it:

https://webapplog.com/http2-server-push-node-express/

An example route from that page:

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="/main.js"></script>')})

Calling res.push() is the key here with the file you want to serve.

He also documents a way to write some middleware to handle pushing as well of assets:

https://webapplog.com/http2-server-push-express-middleware/

Once you have this implemented you can see the pushed items in Chrome devtools as in the answer from BazzaDP.


Chrome will show "Push / Other" in the Initiator column in Developer Tools->Network if the asset is pushed from the server:

enter image description here

I don't use the SDPY module in Node, but looks like from here and here that this module doesn't use the Link header to push resources like some other servers (e.g. Apache) do. So unless you have, for example, Apache in front of this in HTTP/2 mode then I doubt your code will push the resource.