Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
JSGI Adapter for Node.js
JavaScript
tree: 9b21d8465b

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
README.md
package.json

README.md

JSGI 0.3 Adapter for Node

To use, provide a JSGI application (can be application stack) to the start function:

require("jsgi-node").start(function(request){
  return request.body.join().then(function(requestBody){
    return {
      status:200,
      headers:{},
      body:["echo: " + requestBody]
    };
  });
});

This adapter should conform to the JSGI 0.3 (with promises) for full asynchronous support. For example:

var fs = require("promised-io/fs");
require("jsgi-node").start(function(request){
  return fs.readFile("jsgi-node.js").then(function(body){
    return {
      status: 200,
      headers: {},
      body: [body]
    };
  });
});

File objects returned from promised-io's fs can be directly provided as body for automated streaming of data to the client from the filesystem:

var fs = require("promised-io/fs");
require("jsgi-node").start(function(request){
  return {
    status: 200,
    headers: {},
    body: fs.open("some-file.txt","r")
  };
});

This package also includes an adapter for running Node HTTP apps on top of JSGI middleware:

var fs = require("promised-io/fs"),
    Node = require("jsgi/node").Node;
require("jsgi-node").start(
  SomeJSGIMiddleWare(
    OtherJSGIMiddleWare(
      Node(function(request, response){
       // request and response conform to Node's HTTP API
      })
    )
  )
);
Something went wrong with that request. Please try again.