Files
Xen-Orchestra-xen-orchestra…/@vates/http-server-plus

@vates/http-server-plus

Package Version License PackagePhobia Node compatibility

Augmented `http.Server`, HTTP/HTTPS/HTTP2 and multiple ports on the same instance

Install

Installation of the npm package:

npm install --save @vates/http-server-plus

Usage

create([opts], [requestListener])

Creates a new server instance. opts may contain createServer and createSecureServer factories (defaults to http.createServer and https.createServer). requestListener is registered as a request event listener.

import { create } from '@vates/http-server-plus'

const server = create(function onRequest(req, res) {
  res.end('Hello')
})

server.listen(opts)

Starts listening. Returns a promise that resolves to a human-readable address string, or rejects with error.niceAddress set.

// HTTP on a specific port
await server.listen({ port: 8080 })

// HTTPS — detected automatically when cert+key are provided
await server.listen({
  port: 443,
  cert: fs.readFileSync('certificate.pem'),
  key: fs.readFileSync('private_key.pem'),
})

// Unix socket
await server.listen({ socket: '/var/run/http.sock' })

// File descriptor
await server.listen({ fd: 3 })

// Systemd socket activation
await server.listen({ systemdSocket: 0 })

As a convenience, if hostname is 'localhost', it will listen on both 127.0.0.1 and ::1, similar to what Node does when no hostname is provided.

Multiple endpoints can be started on the same instance:

const [httpAddr, httpsAddr] = await Promise.all([server.listen({ port: 80 }), server.listen({ port: 443, cert, key })])
console.log('listening on', httpAddr, httpsAddr)

HTTP/2

Pass a custom createSecureServer factory to enable HTTP/2:

import { createSecureServer } from 'node:http2'
import { create } from '@vates/http-server-plus'

const server = create({ createSecureServer }, app)
await server.listen({ port: 443, cert, key })

server.close()

Closes all underlying servers. Returns a promise that resolves once the close event is emitted.

await server.close()

Contributions

Contributions are very welcomed, either on the documentation or on the code.

You may:

  • report any issue you've encountered;
  • fork and create a pull request.

License

ISC © Vates SAS