node package manager
Don’t reinvent the wheel. Reuse code within your team. Create a free org »


pull-http stability

npm version build status test coverage downloads js-standard-style

Http pull-stream functions. Useful for composing middleware in high throughput servers.


const serverRouter = require('server-router')
const summary = require('server-summary')
const browserify = require('browserify')
const pullHttp = require('./pull-http')
const logHttp = require('http-ndjson')
const pull = require('pull-stream')
const bankai = require('bankai')
const bole = require('bole')
const http = require('http')
const path = require('path')
const clientp = path.join(__dirname, 'client-main.js')
const log = bole('main')
createServer({ port: 1337, logLevel: 'debug' })
function createServer (argv) {
  bole.output({ level: argv.logLevel, stream: process.stdout })
  const router = createRouter()
  const server = http.createServer(function (req, res) {
    const setSize = logHttp(req, res, log.debug)
    const source = pullHttp.createSource(req, res)
    const through = router(req, res, setSize)
    const sink = pullHttp.createSink(req, res, setSize)
    pull(source, through, sink)
  server.listen(argv.port, summary(server))
function createRouter () {
  const router = serverRouter('/404')
  router.on('/', pullHttp.intercept(bankai.html()))
  router.on('/bundle.css', pullHttp.intercept(bankai.css()))
  router.on('/bundle.js', pullHttp.intercept(bankai.js(browserify, clientp)))
  return router


pullHttp.createSource(req, res)

Create a new source stream from an HTTP request. Attempts to parse JSON if content type is application/json.

pullHttp.createSink(req, res)

Creates a new sink stream. Sends errors if an error is detected. Sends JSON if any data is passed. If no data is passed, it acts as a noop sink, expecting an earlier stream to handle res.end().

pullHttp.intercept(httpFn) -> routerFn(req, res, params, setSize)

Wrap a Node stream behind a router to send data, and handle its own res.end() call. [more docs tbi]


$ npm install pull-http

See Also