webentwicklung-frage-antwort-db.com.de

Native http2-Unterstützung für NodeJS

Unterstützt NodeJS 4.x oder 5.x das HTTP/2-Protokoll? Ich weiß, dass es ein http2-Paket gibt, aber es ist eine externe Sache.

Gibt es Pläne, die http2-Unterstützung in den Kern des Knotens zu integrieren?

15
Oskar Szura

Das Flag --expose-http2 aktiviert die experimentelle HTTP2-Unterstützung. Dieses Flag kann seit dem 5. August 2017 im nächtlichen Build (Node v8.4.0) verwendet werden ( 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 flag kann seit Node v8.5.0 ebenfalls hinzugefügt werden.

node --expose-http2 --experimental-modules client.mjs

client.mjs

import http2 from 'http2';

const client = http2.connect('https://stackoverflow.com');

Ich benutze NVS (Node Version Switcher) zum Testen von nächtlichen Builds.

nvs add nightly
nvs use nightly
9
masakielastic

Nein noch nicht.

Hier ist die Diskussion über das Hinzufügen von HTTP/2-Unterstützung zu Core-NodeJS: https://github.com/nodejs/NG/issues/8

8
FF_Dev

Ab Knoten 8.8.1 benötigen Sie das Flag --expose-http2 nicht mehr, wenn Sie Ihren Code ausführen.

Der einfachste Weg, um mit HTTP/2 zu beginnen, besteht darin, die von Node.js bereitgestellte Kompatibilitäts-API zu verwenden.

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);

Ich habe mehr über die Verwendung von Native HTTP/2 Node.js geschrieben, um hier einen Server zu erstellen .

2
everconfusedGuy

Knoten 8.4.0 verfügt über eine experimentelle Http2-API. Dokumente hier nodejs http2

1
el_bogavante