Socket
Socket
Sign inDemoInstall

abstract-http-server

Package Overview
Dependencies
3
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    abstract-http-server

Description


Version published
Maintainers
1
Install size
145 kB
Created

Readme

Source

AbstractHttpServer

AbstractHttpServer is a thin wrapper class over node's http server

Installation

npm i --save abstract-http-server

Usage

Supports both ESM and CommonJS
// esm
import AbstractHttpServer from 'abstract-http-server'
// commonjs
const AbstractHttpServer = require('abstract-http-server').default
Hello World Example

Create and start "hello world" server using AbstractHttpServer

import AbstractHttpServer from 'abstract-http-server'

class MyHttpServer extends AbstractHttpServer {
  handleRequest(req, res) {
    res.statusCode = 200
    res.end('Hello World!')
  }
}

const server = new MyHttpServer()
await server.start({ port: 3333 })
// log: http server: starting { port: 3333 }
// log: http server: started { port: 3333 }
Async/Await Example

handleRequest can be used with async/await

import AbstractHttpServer from 'abstract-http-server'

class MyHttpServer extends AbstractHttpServer {
  async handleRequest(req, res) {
    await Promise.resolve()
    res.statusCode = 200
    res.end('Hello World!')
  }
}
Constructor Options Example

Constructor, start, and stop options examples

// AbstractHttpServer supports all of http.createServer options and custom logger
const server = new AbstractHttpServer({
  // http server options
  maxHeaderSize: 100;
  insecureHTTPParser: false;
  // additional options
  logger: console,
})

// start all of httpServer.listen options
await server.start({
  // http server listen options
  port: 3333,
  host: 'localhost',
  backlog: 10,
  path: 'foo',
  exclusive: false,
  readableAll: true,
  writableAll: true,
  ipv6Only: false,
})

// stop supports "destroying" a server using the force: true option
await server.stop({
  force: true
})
Stop Server Example

handleRequest can be used with async/await

import AbstractHttpServer from 'abstract-http-server'

class MyHttpServer extends AbstractHttpServer {
  async handleRequest(req, res) {
    await Promise.resolve()
    res.statusCode = 200
    res.end('Hello World!')
  }
}

const server = new MyHttpServer()
await server.start({ port: 3333 })
// log: http server: starting {}
// log: http server: started {}
await server.stop()
// log: http server: stopping {}
// log: http server: stopped {}
Errors Example
import AbstractHttpServer from 'abstract-http-server'

class MyHttpServer extends AbstractHttpServer {
  handleRequest(req, res) {
    res.statusCode = 200
    res.end('Hello World!')
  }
}

const server = new MyHttpServer()
try {
  await server.start({ port: 3333 })
} catch (err) {
  // log: http server: start errored: { err: ... }
  if (err instanceof HttpServerStartError) {
    console.error(err)
    /*
    HttpServerStartError: error starting http server
        at Function.wrap (/app/index.ts:51:12)
        ...
    {
      "port": 3333
    }
    ----
    Error: listen EADDRINUSE: address already in use :::3333
        at Server.setupListenHandle [as _listen2] (net.js:1313:16)
        ...
    */
    console.error(err.source)
    /*
    Error: listen EADDRINUSE: address already in use :::3333
        at Server.setupListenHandle [as _listen2] (net.js:1313:16)
        ...
    */
  }
  // ...
}
try {
  await server.stop()
} catch (err) {
  // log: http server: stop errored: { err: ... }
  if (err instanceof HttpServerStopError) {
    console.error(err)
    /*
    HttpServerStopError: error starting http server
        at Function.wrap (/app/index.ts:51:12)
        ...
    {}
    ----
    Error: foo
        at ...
        ...
    */
    console.error(err.source)
    /*
    Error: foo
        at ...
        ...
    */
  }
  // ...
}

License

MIT

FAQs

Last updated on 11 Aug 2022

Did you know?

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc