dean
v0.1.2
Published
Proxy routing table with cluster support
Downloads
6
Readme
dean
Author
Evan Lucas
License
MIT
Installation
$ npm install -g dean
Tests
$ npm test
Coverage
$ npm run cover
API
Dean
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
.
Params
| Name | Type(s) | Description | | ---- | ------- | ----------- | | opts | Object | The options |
Dean.listen()
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')
})
Params
| Name | Type(s) | Description | | ---- | ------- | ----------- | | port | Number | The port on which we should listen (optional) | | host | String | The bindAddress (optional) | | cb | Function | function() |
Dean.close()
Closes the server and stops accepting requests
Params
| Name | Type(s) | Description | | ---- | ------- | ----------- | | cb | Function | function() |
Dean.addDrone()
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'
})
Params
| Name | Type(s) | Description | | ---- | ------- | ----------- | | drone | String, Object, Number | The drone to add |
Dean.removeDrone()
Removes a drone from the rotation
Example
dean.removeDrone('0.0.0.0:4043')
Params
| Name | Type(s) | Description | | ---- | ------- | ----------- | | drone | String | The drone to remove |
Instrumentation
Instrumentation is optional via jstrace.
The following probes are exposed:
dean:proxy:web:start
target
will be the request's targetmethod
will be the request methodurl
will be the request url
dean:proxy:web:end
target
will be the request's targetmethod
will be the request methodurl
will be the request urlduration
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