HTTP/2 — multiplexed streams over a single connection.
1const http2 = require("http2");2const fs = require("fs");34const server = http2.createSecureServer({5 key: fs.readFileSync("server.key"),6 cert: fs.readFileSync("server.cert"),7});89server.on("stream", (stream, headers) => {10 const path = headers[":path"];1112 // Server Push13 if (path === "/index.html") {14 stream.pushStream({ ":path": "/style.css" }, (err, pushStream) => {15 pushStream.respond({ ":status": 200 });16 pushStream.end(fs.readFileSync("style.css"));17 });18 }1920 // Regular response21 stream.respond({ ":status": 200, "content-type": "text/html" });22 stream.end("<h1>Hello HTTP/2</h1>");23});2425server.listen(3000);
HTTP/2 client:
1const client = http2.connect("https://localhost:3000");23const req = client.request({ ":path": "/data" });4req.on("response", (headers) => {5 console.log("Status:", headers[":status"]);6});7let data = "";8req.on("data", (chunk) => data += chunk);9req.on("end", () => console.log(data));10req.end();