@vates/http-server-plus
v2.0.2
Published
Augmented `http.Server`, HTTP/HTTPS/HTTP2 and multiple ports on the same instance
Readme
@vates/http-server-plus
Augmented `http.Server`, HTTP/HTTPS/HTTP2 and multiple ports on the same instance
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
hostnameis'localhost', it will listen on both127.0.0.1and::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.
