nodejs 检测port是否被占用
发布时间:2020-12-16 22:35:04 所属栏目:安全 来源:网络整理
导读:为了解决 ssr 工具 起多个服务的时候端口被占用的情况。分享研究的代码片段。 // 检测port是否被占用function probe(port,callback) { var server = net.createServer().listen(port) var calledOnce = false var timeoutRef = setTimeout(function () { cal
为了解决 ssr 工具 起多个服务的时候端口被占用的情况。分享研究的代码片段。 // 检测port是否被占用 function probe(port,callback) { var server = net.createServer().listen(port) var calledOnce = false var timeoutRef = setTimeout(function () { calledOnce = true callback(false,port) },2000) timeoutRef.unref() var connected = false server.on('listening',function() { clearTimeout(timeoutRef) if (server) server.close() if (!calledOnce) { calledOnce = true callback(true,port) } }) server.on('error',function(err) { clearTimeout(timeoutRef) var result = true if (err.code === 'EADDRINUSE') result = false if (!calledOnce) { calledOnce = true callback(result,port) } }) } 使用例子: function server(_port){ var pt = _port || __port; probe(pt,function(bl,_pt){ // 端口被占用 bl 返回false // _pt:传入的端口号 if(bl === true){ // ssr(_pt) server = http.createServer(connListener); server = server.listen(parseInt(_pt,10)); console.log("n Static file server running at" + "nn=> http://localhost:" + _pt + 'n'); }else{ server(_pt+1) } }) } 关注公众号 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |