0.0.16 • Published 4 years ago

dragnet v0.0.16

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

dragnet

HTTP2 stream server

install

npm install dragnet

example

generate localhost certificate: openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -keyout localhost-key.pem -out localhost-cert.pem

server.js

const fs = require("fs");
const {
  HTTP2_HEADER_CONTENT_TYPE,
  HTTP2_HEADER_STATUS
} = require("http2").constants;
const dragnet = require("dragnet");
const Router = require("dragnet/router");

const server = dragnet({
  cert: fs.readFileSync("localhost-cert.pem"),
  key: fs.readFileSync("localhost-key.pem")
});

const router = new Router();

router.get("/(.*)", (stream, headers, flags, matches) => {
  stream.respond({
    [HTTP2_HEADER_CONTENT_TYPE]: "text/plain",
    [HTTP2_HEADER_STATUS]: 200
  });

  stream.end(`path part: ${matches[1]}`);
});

server.use(router);

server.listen(8443);

http2 upstream proxy example

generate localhost certificate: openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -keyout localhost-key.pem -out localhost-cert.pem

server1.js

const fs = require("fs");
const {
  HTTP2_HEADER_PATH
} = require("http2").constants;
const dragnet = require("dragnet");
const Router = require("dragnet/router");

const server = dragnet({
  cert: fs.readFileSync("localhost-cert.pem"),
  key: fs.readFileSync("localhost-key.pem")
});

const router = new Router();

const urlResolver = (headers, matches) => {
  return {
    url: "https://localhost:8444",
    headers: {
      ...headers,
      [HTTP2_HEADER_PATH]: `/${matches[1]`
    }
  };
};

// ClientHttp2Session.request options
const options = { ca: cert };

router.proxy(
  "/proxy/(.*)",
  urlResolver,
  options
);

server.use(router);

server.listen(8443);

server2.js

const fs = require("fs");
const {
  HTTP2_HEADER_CONTENT_TYPE,
  HTTP2_HEADER_STATUS
} = require("http2").constants;
const dragnet = require("dragnet");
const Router = require("dragnet/router");

const server = dragnet({
  cert: fs.readFileSync("localhost-cert.pem"),
  key: fs.readFileSync("localhost-key.pem")
});

const router = new Router();

router.get("/(.*)", (stream, headers, flags, matches) => {
  stream.respond({
    [HTTP2_HEADER_CONTENT_TYPE]: "text/plain",
    [HTTP2_HEADER_STATUS]: 200
  });

  stream.end(`path part: ${matches[1]}`);
});

server.use(router);

server.listen(8444);
0.0.16

4 years ago

0.0.15

4 years ago

0.0.13

4 years ago

0.0.14

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.3

4 years ago

0.0.4

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago