dean

Proxy routing table with cluster support

dean

Evan Lucas

MIT

$ npm install -g dean
$ npm test
$ npm run cover

Constructor

opts can contain the following:

Key Description
key The session id (connect.sid) can also pass session-key
bindAddress The ip to bind (0.0.0.0)
port The listening port (8040)
https https options (key, cert)
timeout Proxy timeout (0)
max-sockets Max number of sockets for the http agent
redis Object containing redis options (port, host, socket, db)
trace jstrace instance

redis note: the redis key can also contain a redisClient. This should be an instance of redis.createClient. redis.socket will take priority over redis.host and redis.port.

Name Type(s) Description
opts Object The options

Listen for requests

Examples:

// just a callback 
dean.listen(function() {
  console.log('listening on port', dean.port)
})
 
// with a port 
dean.listen(8044, function() {
  console.log('listening on port', 8044)
})
 
// with a port and host 
dean.listen(8044, '127.0.0.1', function() {
  console.log('listening at', '127.0.0.1:8044')
})
Name Type(s) Description
port Number The port on which we should listen (optional)
host String The bindAddress (optional)
cb Function function()

Closes the server and stops accepting requests

Name Type(s) Description
cb Function function()

Adds a new drone to the rotation

Example

// all of the following will be accepted 
// '0.0.0.0:4043' 
dean.addDrone('0.0.0.0:4043')
dean.addDrone('4043')
dean.addDrone(4043)
dean.addDrone({
  port: 4043
, host: '0.0.0.0'
})
Name Type(s) Description
drone String, Object, Number The drone to add

Removes a drone from the rotation

Example

dean.removeDrone('0.0.0.0:4043')
Name Type(s) Description
drone String The drone to remove

Instrumentation is optional via jstrace.

The following probes are exposed:

  • dean:proxy:web:start
    • target will be the request's target
    • method will be the request method
    • url will be the request url
  • dean:proxy:web:end
    • target will be the request's target
    • method will be the request method
    • url will be the request url
    • duration will be the duration of the request in ms
  • dean:drone:add
    • drone will be the added drone
  • dean:drone:remove
    • drone will be the removed drone

An example script has been provided at ./scripts/trace.js. To test it out:

$ jstrace ./scripts/trace.js
 
# Then in another terminal
$ npm test