INNER CODE UNIT · JavaScript
listen
wangshengithub/staticshield · src/server.js:120
function listen(server, port, host, maxTry, cb) {
var tries = 0;
var onErr = function (e) { if (e.code === 'EADDRINUSE' && tries < maxTry) { tries++; server.listen(port + tries, host); } else { server.removeListener('error', onErr); cb(e); } };
server.on('error', onErr);
server.on('listening', function () { server.removeListener('error', onErr); cb(null, server.address().port); });
server.listen(port, host);
}
function startServer(opts) {
opts = opts || {};
var host = opts.host || '127.0.0.1';
var port = (opts.port === undefined || opts.port === null) ? DEFAULT_PORT : opts.port;
var guiPath = opts.guiPath || path.join(__dirname, '..', 'gui', 'index.html');
var guiHtml = fs.existsSync(guiPath) ? fs.readFileSync(guiPath, 'utf8') : null;
return new Promise(function (resolve, reject) {
var ctx = { port: null };
var server = http.createServer(makeHandler(guiHtml, ctx));
server.timeout = 120000; server.requestTimeout = 60000; server.headersTimeout = 65000; server.keepAliveTimeout = 5000;
server.on('error', function (e) { console.error('[server] 运行错误:', e.message); });