Package Exports
- pull-http
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pull-http) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
pull-http 
Http pull-stream functions. Useful for composing middleware in high throughput servers.
Usage
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
}
API
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]
Installation
$ npm install pull-http