Поддержка NodeJS родной http2
Поддерживает ли NodeJS 4.x или 5.x протокол HTTP/2? Я знаю, что пакет http2, но это внешняя вещь.
Есть ли планы объединить поддержку http2 в ядро Node?
Ответы
Ответ 1
Флаг --expose-http2
обеспечивает экспериментальную поддержку HTTP2. Этот флаг можно использовать в ночной сборке (Node v8.4.0) с 5 августа 2017 года (запрос на перенос).
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
также можно добавить с Node v8.5.0.
node --expose-http2 --experimental-modules client.mjs
client.mjs
import http2 from 'http2';
const client = http2.connect('https://stackoverflow.com');
Я использую NVS (Node Version Switcher) для тестирования ночных сборок.
nvs add nightly
nvs use nightly
Ответ 2
Нет, еще нет.
Вот обсуждение добавления поддержки HTTP/2 для ядра NodeJS: https://github.com/nodejs/NG/issues/8
Ответ 3
Из node v8.8.1 вам не нужен флаг --expose-http2
, когда вы запускаете свой код.
Самый простой способ начать работу с HTTP/2 - использовать API совместимости, который предоставляет 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);
Я написал больше об использовании собственного HTTP/2 Node.js, чтобы создать здесь сервер.
Ответ 4
Node 8.4.0 имеет экспериментальный API Http2. Документы здесь nodejs http2