UNPKG

@logux/server

Version:

Build own Logux server or make proxy between WebSocket and HTTP backend on any language

43 lines (36 loc) 1.02 kB
import { promises as fs } from 'node:fs' import http from 'node:http' import https from 'node:https' import { isAbsolute, join } from 'node:path' const PEM_PREAMBLE = '-----BEGIN' function isPem(content) { if (typeof content === 'object' && content.pem) { return true } else { return content.toString().trim().startsWith(PEM_PREAMBLE) } } function readFrom(root, file) { file = file.toString() if (!isAbsolute(file)) file = join(root, file) return fs.readFile(file) } export async function createHttpServer(opts) { let server if (opts.server) { server = opts.server } else { let key = opts.key let cert = opts.cert if (key && !isPem(key)) key = await readFrom(opts.root, key) if (cert && !isPem(cert)) cert = await readFrom(opts.root, cert) if (key && key.pem) { server = https.createServer({ cert, key: key.pem }) } else if (key) { server = https.createServer({ cert, key }) } else { server = http.createServer() } } return server }