node-web-mvc
Version:
node spring mvc
49 lines (48 loc) • 1.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @module ServletNodeContext
* @description node原生框架接入上下文实现
*/
const http_1 = __importDefault(require("http"));
const https_1 = __importDefault(require("https"));
const http2_1 = __importDefault(require("http2"));
class NodeNativeConnector {
createServer(config, handler) {
switch (config.httpType) {
case 'https':
return https_1.default.createServer(config, handler);
case 'http2':
return http2_1.default.createServer(config, handler);
default:
return http_1.default.createServer(config, handler);
}
}
connect(handler, config) {
return new Promise((resolve, reject) => {
const server = this.createServer(config, (req, res) => {
Object.defineProperty(req, 'path', { value: req.url });
handler(req, res, (err) => {
if (err) {
console.error(err.stack || err);
res.writeHead(500).end('internal error');
}
else {
res.writeHead(404).end();
}
});
});
server.on('clientError', (err, socket) => {
socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
});
server.listen(config.port, () => {
resolve(server);
});
server.on('error', reject);
});
}
}
exports.default = NodeNativeConnector;