UNPKG

@seasketch/geoprocessing

Version:

Geoprocessing and reporting framework for SeaSketch 2.0

48 lines (42 loc) 1.28 kB
import http from "node:http"; import finalhandler from "finalhandler"; import serveStatic from "serve-static"; export function startLocalServer( options: { path: string; port: number } = { path: "./", port: 8001 }, ) { const serve = serveStatic(options.path); const server = http.createServer(function (req, res) { const done = finalhandler(req, res); serve(req, res, done as () => void); }); server.listen(options.port); } /** * Local file server, for quickly serving static files */ export default class LocalFileServer { private _server: http.Server; constructor(options: { path?: string; port?: number }) { const { path = "./", port = 8001 } = options; const serve = serveStatic(path); this._server = http.createServer(function (req, res) { const done = finalhandler(req, res, { onerror: LocalFileServer.logerror, }); serve(req, res, done as () => void); }); this._server.listen(port); this._server.setTimeout(5000, () => { console.log("Timeout after 5 seconds"); this._server.close(() => { console.log("Server is closed"); }); }); } public close(): void { this._server.close(); } static logerror(err) { console.error(err.stack || err.toString()); } }