node package manager

connect

High performance middleware framework

Connect

Connect is an extensible HTTP server framework for node using "plugins" known as middleware.

var connect = require('connect');
var http = require('http');
 
var app = connect();
 
// gzip/deflate outgoing responses 
var compression = require('compression');
app.use(compression());
 
// store session state in browser cookie 
var cookieSession = require('cookie-session');
app.use(cookieSession({
    keys: ['secret1', 'secret2']
}));
 
// parse urlencoded request bodies into req.body 
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded());
 
// respond to all requests 
app.use(function(req, res){
  res.end('Hello from Connect!\n');
});
 
//create node.js http server and listen on port 
http.createServer(app).listen(3000);

Connect is a simple framework to glue together various "middleware" to handle requests.

$ npm install connect

The main component is a Connect "app". This will store all the middleware added and is, itself, a function.

var app = connect();

The core of Connect is "using" middleware. Middleware are added as a "stack" where incoming requests will execute each middleware one-by-one until a middleware does not call next() within it.

app.use(function middleware1(req, res, next) {
  // middleware 1 
  next();
});
app.use(function middleware2(req, res, next) {
  // middleware 2 
  next();
});

The .use() method also takes an optional path string that is matched against the beginning of the incoming request URL. This allows for basic routing.

app.use('/foo', function fooMiddleware(req, res, next) {
  // req.url starts with "/foo" 
  next();
});
app.use('/bar', function barMiddleware(req, res, next) {
  // req.url starts with "/bar" 
  next();
});

There are special cases of "error-handling" middleware. There are middleware where the function takes exactly 4 arguments. When a middleware passes an error to next, the app will proceed to look for the error middleware that was declared after that middleware and invoke it, skipping any error middleware above that middleware and any non-error middleware below.

// regular middleware 
app.use(function (req, res, next) {
  // i had an error 
  next(new Error('boom!'));
});
 
// error middleware for errors that occurred in middleware 
// declared before this 
app.use(function onerror(err, req, res, next) {
  // an error occurred! 
});

The last step is to actually use the Connect app in a server. The .listen() method is a convenience to start a HTTP server.

var server = app.listen(port);

The app itself is really just a function with three arguments, so it can also be handed to .createServer() in Node.js.

var server = http.createServer(app);

These middleware and libraries are officially supported by the Connect/Express team:

Most of these are exact ports of their Connect 2.x equivalents. The primary exception is cookie-session.

Some middleware previously included with Connect are no longer supported by the Connect/Express team, are replaced by an alternative module, or should be superseded by a better module. Use one of these alternatives instead:

Checkout http-framework for many other compatible middleware!

npm install
npm test

https://github.com/senchalabs/connect/graphs/contributors

  • Connect < 1.x - node 0.2
  • Connect 1.x - node 0.4
  • Connect < 2.8 - node 0.6
  • Connect >= 2.8 < 3 - node 0.8
  • Connect >= 3 - node 0.10, 0.12; io.js 1.x, 2.x

MIT