http-app-router v3.1.0
http-app-router

Request router for building HTTP proxy servers
http-app-router is a Node HTTP router designed for serving multiple HTML applications on the same domain. HTML applications might include:
- A single page JavaScript web app
- A CMS-powered blog
- Static HTML content
If it speaks HTTP and sends HTML, it's an HTML app. Apps are defined with a server host and a list of routes that should match to that app. The router will make a request to your app and stream the response down to the client.
Install
$ npm install --save http-app-routerUsage
Pass an array of apps to the Router contructor to create a router handler. Use that handler to route requests and send a response if an app matches the request. Handlers are req, res, callback functions that you can use with plain http.Server instances or connect/express apps.
The router will always send a response when fetching the app is successful and will never send an error response. That's up to you.
var Router = require('http-app-router')
var http = require('http')
var router = Router([
{
name: 'github',
host: 'github.com',
routes: [
'/bendrucker'
]
},
{
name: 'local',
host: 'localhost',
routes: '*'
}
])
var server = http.createServer(function (req, res) {
router(req, res, function (err) {
if (err) res.end('oh no, an error!')
})
})API
Router(apps) -> function
Returns a router function.
app
Required
Type: array[object]
An array of app objects, containing:
name
Required
Type: string
An application name.
host
Required
Type: string
The application host.
insecure
Type: boolean
Default: false
Toggles the app to be fetched over plain HTTP instead of HTTPS.
prefix
Type: string
Default: ''
A prefix that will be removed from the URL before being passed along.
headers
Type: object
Optional headers to set on requests.
cookies
Type: array[string]
A whitelist of cookie names that can be sent by a client or set by an app.
transforms
Type: array[string]
An array of transform function keys that receive the app as an argument and return a Transform stream. The transform stream will receive and output HTML.
Built in:
Or add custom things, maybe minification or something equally practical:
var transforms = require('http-app-router/transforms')
var through = require('through2')
tranforms.uppercase = function (app) {
return through(function (chunk, enc, callback) {
callback(null, chunk.toString().toUpperCase())
})
}router.onLog(listener) -> function
Listens on log output from the router.
listener
Required
Type: function
Arguments: {level, message}
License
MIT © Ben Drucker
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago