Est-ce que NodeJS 4.x ou 5.x supporte nativement le protocole HTTP/2? Je sais qu'il existe un paquet http2 mais c'est une chose externe.
Est-il prévu de fusionner le support http2 dans le noyau du nœud?
--expose-http2
flag active la prise en charge expérimentale de HTTP2. Ce drapeau peut être utilisé de nuit (Node v8.4.0) depuis le 5 août 2017 ( pull request ).
node --expose-http2 client.js
client.js
const http2 = require('http2');
const client = http2.connect('https://stackoverflow.com');
const req = client.request();
req.setEncoding('utf8');
req.on('response', (headers, flags) => {
console.log(headers);
});
let data = '';
req.on('data', (d) => data += d);
req.on('end', () => client.destroy());
req.end();
--experimental-modules
peut également être ajouté depuis Node v8.5.0.
node --expose-http2 --experimental-modules client.mjs
client.mjs
import http2 from 'http2';
const client = http2.connect('https://stackoverflow.com');
J'utilise NVS (Node Version Switcher) pour tester les versions nocturnes.
nvs add nightly
nvs use nightly
Non pas encore.
Voici la discussion sur l'ajout de la prise en charge HTTP/2 au noyau NodeJS: https://github.com/nodejs/NG/issues/8
À partir du noeud v8.8.1, vous n'avez pas besoin de l'indicateur --expose-http2
lorsque vous exécutez votre code.
Le moyen le plus simple de se familiariser avec HTTP/2 consiste à utiliser l'API de compatibilité exposée par Node.js.
const http2 = require('http2');
const fs = require('fs');
const options = {
key: fs.readFileSync('./selfsigned.key'),
cert: fs.readFileSync('./selfsigned.crt'),
allowHTTP1: true
}
const server = http2.createSecureServer(options, (req, res) => {
res.setHeader('Content-Type', 'text/html');
res.end('ok');
});
server.listen(443);
J'ai écrit plus sur l'utilisation du natif HTTP/2 Node.js expose pour créer un serveur ici .
Le noeud 8.4.0 a une API Http2 expérimentale. Docs ici nodejs http2