Open rawbin- opened 8 years ago
一个建议的解决办法,通过进程判断端口是否被占用 ,通过尝试访问判断是否能正确访问,最终给一个server是否成功启动的结果
var fs = require('fs');
var https = require('https');
var exec = require('child_process').exec;
exec("netstat -ano", function(err, stdout, stderr) {
if(err){ return console.log(err); }
stdout.split('\n').filter(function(line){
if(line.indexOf("0.0.0.0:443") > -1 || line.indexOf('[::]:443') > -1 ) {
console.log("there is already a process listen on 443")
}
});
});
var server = https.Server({
key: fs.readFileSync('./certs/server.key'),
cert: fs.readFileSync('./certs/server.crt')
}, function(req, res){
res.writeHead(200);
res.end("hello world\n");
}).listen(443, function(err){
console.log("https listening on port: 443");
});
https.get({
host: 'localhost',
port:443,
path: '/',
method: 'GET',
rejectUnauthorized:false,
key: fs.readFileSync('./certs/server.key'),
cert: fs.readFileSync('./certs/server.crt')
},function(resp){
if(resp.statusCode !== 200){
console.log("error to start the server normally")
server.close();
}
console.log(resp.statusCode)
}).on('error',function(err){
console.log(err)
})
在端口被占用的情况下还能正常启动(这个不正常),但启动后无法正确访问