Socket
Book a DemoInstallSign in
Socket

hurp-http-server

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hurp-http-server

Hurp module wrapper for Node.js http[s].Server

latest
Source
npmnpm
Version
1.0.4
Version published
Maintainers
1
Created
Source

hurp-http-server

npm

Async module wrapper for native Node.js http.Server with graceful shutdown.

More about Hurp and how to use it:
https://github.com/yaroslav-korotaev/hurp

Installation

$ npm install hurp-http-server

Usage

In a Hurp-Based Application

import Hurp from 'hurp';
import HttpServer from 'hurp-http-server';
import { Log } from 'hurp-types';

export interface Options {
  log: Log;
}

export default class App extends Hurp {
  public readonly server: HttpServer;
  
  constructor(options: Options) {
    super();
    
    const server = new HttpServer({
      log: options.log,
      handler: (req, res) => res.end('hello, world'),
      listen: {
        host: 'localhost',
        port: 3000,
      },
    });
    this.server = this.use(server);
  }
}

Standalone

import pino from 'pino';
import HttpServer from 'hurp-http-server';

async function main() {
  const log = pino();
  
  const server = new HttpServer({
    log,
    handler: (req, res) => res.end('hello, world'),
    listen: {
      host: 'localhost',
      port: 3000,
    },
  });
  
  // Start listening
  await server.init();
  
  // Shutdown gracefully
  // await server.destroy();
}

Logger

Logger instance must be compatible with that interface:

interface Log {
  child(bindings: { [key: string]: any }): Log;
  info(message: string): void;
}

This approach is inspired by Bunyan. You can use a compatible logger like pino directly or write a simple wrapper around any other you like.

Types

Options

import { Options } from 'hurp-http-server';

An object, HttpServer constructor options.

tag?: string

Will be used as module tag and passed as tag field in bindings to child logger. Optional, value http-server used by default.

log: Log

Base logger used to create child logger for new HttpServer instance.

server?: http.Server

Optional native Node.js http server instance. If undefined, a new one will be created by default.

handler: (req: http.IncomingMessage, res: http.ServerResponse) => void

Request handler, will be attached to wrapped native http server instance as request event listener.

listen?: net.ListenOptions

Options will be passed to listen() method of http server instance.

API

HttpServer

import HttpServer from 'hurp-http-server';

A class, async module wrapper for native Node.js http server.

constructor(options: Options)

Creates a new HttpServer instance.

options: Options - instance options

async init(): Promise<void>

Initializes the http server by opening a port. Will throw an error in a case with error event from underlying native http server instance.

async destroy(): Promise<void>

Closes listening port and waits for pending requests. All keep-alived connections with no pending requsts will be closed immediately.

Keywords

hurp

FAQs

Package last updated on 06 Jun 2019

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