Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@mattiash/http

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mattiash/http

Opinionated http(s) 1 and 2 server

latest
Source
npmnpm
Version
1.2.0
Version published
Maintainers
1
Created
Source

@mattiash/http

NPM Version Build Status Coverage Status

Opinionated http(s) server.

This module implements an http/https-server that behaves the way I think it should behave:

  • Allow use of persistent connections.
  • listenAsync() returns a promise that resolves with AddressInfo when the server is listening.
  • close() stops listening for new connections immediately.
  • close() closes all idle persistent connections immediately.
  • close() closes all non-idle connections as soon as the response to the current request has been sent.
  • closeAsync() does the same thing as close and returns a promise that resolves when all connections have been closed.
  • Works for http, https and http2.
  • Has type-definitions for typescript.
  • Has tests that check that it actually closes persistent connections correctly.
  • Tests are run periodically on all supported versions of node, see travis for details.

API

The module exports

  • createHttpServer and createHttpsServer for creating http and https-servers
  • createHttp2Server and createHttp2SecureServer for creating http2 servers without and with TLS

All functions work the same as their counterparts in node's http, https, and http2 modules, but the returned object has been extended with extra methods.

createHttpServer

Takes a requestListener argument that is passed unmodified to node's http.createServer. Returns an an object that inherits from node's http.Server and extended it with the following two methods:

listenAsync

Starts listening for new connections. Takes the same arguments as http.Server.listen. Returns a promise that resolves with the result of http.Server.address() when the server is actually listening.

closeAsync()

Closes the server as described above. Returns a promise that resolves when the server has stopped listening and all persistent connections have been closed.

Example

import { createHttpServer } from '@mattiash/http'

let srv = createHttpServer((_req, res) => {
    res.writeHead(200)
    res.end('okay')
})

async function run() {
    let address = await srv.listenAsync()
    console.log(`Listening on port ${address.port}`)
    process.on('SIGINT', async () => {
        await srv.closeAsync()
        console.log('Server has been shut down')
    })
}

run()

FAQs

Package last updated on 27 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts