Hice un pequeño servidor para probar http2 en el nodo, sin embargo, no puedo decir si el mecanismo de inserción funciona o no. Mi estilo se carga en http2, pero eso no significa que push esté funcionando según lo previsto...
const port = 3000 const spdy = require('spdy') const express = require('express') const path = require('path') const fs = require('fs') const app = express() app.get('*', (req, res) => { res.set('Link', '</css/styles.css>; rel=preload; as=style'); res.sendFile(__dirname + '/index.html') }) const options = { key: fs.readFileSync(__dirname + '/keys/server.key'), cert: fs.readFileSync(__dirname + '/keys/server.crt') } spdy.createServer(options, app).listen(3000);En los devtools, el iniciador dice: "otro".
Debe decirle explícitamente a su servidor express qué recursos enviar. Mire aquí para una ejecución decente:
https://webapplog.com/http2-servidor-push-node-express/
Una ruta de ejemplo de esa página:
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>') }) Llamar res.push() es la clave aquí con el archivo que desea servir.
También documenta una forma de escribir algún middleware para manejar también la inserción de activos:
https://webapplog.com/http2-servidor-push-express-middleware/
Una vez que haya implementado esto, puede ver los elementos enviados en Chrome devtools como en la respuesta de BazzaDP.
Chrome mostrará "Push/Otro" en la columna Iniciador en Herramientas para desarrolladores->Red si el activo se envía desde el servidor:
No uso el módulo SDPY en Node, pero parece que aquí y aquí este módulo no usa el encabezado de enlace para enviar recursos como lo hacen otros servidores (por ejemplo, Apache). Entonces, a menos que tenga, por ejemplo, Apache delante de esto en modo HTTP/2, entonces dudo que su código empuje el recurso.