Skip to content

polotek/jsgi-node

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 

Repository files navigation

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
      })
    )
  )
);

About

JSGI Adapter for Node.js

Resources

Stars

Watchers

Forks

Packages

No packages published