DylanPiercey / toll

πŸ™‹β€β™‚οΈ Simple node hostname proxying and registration for micro-services.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

js-standard-style Join the chat at https://gitter.im/DylanPiercey/toll

Toll

Utility to manage dynamic micro-services by proxying hostnames to other node servers.

Why

  • Sometimes you are stuck in an environment without something like NGINX.
  • Services may be too sporadic to properly configure.
  • You like node js.

Installation

Npm

npm install toll

Registering a Toll service.

var toll = require("toll");

// Start up a server at an arbitrary port.
var server = require("http").createServer(...).listen();

// Connect to Toll proxy.
var proxy = toll.connect(80);

// Register the server with toll.
proxy.register(
	["api.myapp.com", "api.v2.myapp.com"], // List of hosts this server accepts.
	server.address() // The servers address (same api as connect)
);

Starting a Toll server.

var toll = require("toll");
var server = toll.createProxy();

// This server will automatically listen for new Toll registrations and proxy by hostname.
server.listen(80);

API

  • toll.createProxy() : Creates a Toll proxy server.
// Creates a net.Server which which will automatically proxy registered toll services.
var proxy = toll.createProxy().listen(80);
  • toll.connect(path)
  • toll.connect(port, host)
  • toll.connect({ path, host, port, heartbeat }) Creates a new connection to a Toll proxy at a given port.
// Creates a proxy Connection that sends a heartbeat every 15 seconds.
// Api is the same as net.connect. (except for the return value).
var proxy = toll.connect({
	port: 80,
	host: "localhost".
	heartbeat: 15000
});

The Following api works the same for both the proxy server and the connected hosts.

  • proxy.register(hosts, path)
  • proxy.register(hosts, port, host)
  • proxy.register(hosts, { path, host, port }) -> Promise Registers hosts with a Toll proxy.
// Registers arguments are flexable like `toll.connect` but must start with a host(s).
proxy.register("a.b.com", server.address());
proxy.register(["api.a.b.com", "test.a.b.com"], 3002, "127.0.0.1");
  • proxy.remove(hosts) -> Promise Unregisters a hosts with a Toll proxy.
proxy.remove("a.b.com");
proxy.remove(["api.a.b.com", "test.a.b.com"]);

CLI

Start a Toll Proxy server from the cli.

npm install toll -g

toll <port> [ip]
toll 80 127.0.0.1

Contributions

  • Use npm test to run tests.

Please feel free to create a PR!

About

πŸ™‹β€β™‚οΈ Simple node hostname proxying and registration for micro-services.


Languages

Language:JavaScript 100.0%