检查申请状态,并在可用时继续

Check application status and proceed when it avilible

本文关键字:继续 状态 检查      更新时间:2023-09-26

我需要检查应用程序是否可用(应用程序通过child_process节点 API 启动),应用程序启动之前的时间可以更改 2 - 30 秒。 如果应用程序不可用,我需要使用 process.exit(1) 停止进程;

我考虑检查应用程序端口是否打开
https://github.com/baalexander/node-portscanner

portscanner.checkPortStatus(3000, '127.0.0.1', function(error, status) {
  // Status is 'open' if currently in use or 'closed' if available
  console.log(status)
})

假设我有应用程序端口(作为参数),我应该如何 100 毫秒很好地完成一次(超时?

看看 Javascript 计时事件: http://www.w3schools.com/js/js_timing.asp

您可以使用 setInterval(函数,毫秒)每 100 毫秒执行一次端口扫描,但要小心:间隔越短,您离危险区域越近,因为端口扫描将消耗扫描机和扫描机器的资源。

请参阅下面的 W3S 示例:

<!DOCTYPE html>
<html>
<body>
<p>A script on this page starts this clock:</p>
<p id="demo"></p>
<script>
  var myVar = setInterval(myTimer, 1000);
  function myTimer() {
    var d = new Date();
    document.getElementById("demo").innerHTML = d.toLocaleTimeString();
  }
</script>
</body>
</html>

在您的情况下,它可能是(如果检查端口状态是您想要的;)):

var myTimer = setInterval(scan, 100);
function scan() {
   portscanner.checkPortStatus(3000, '127.0.0.1', function(error, status) {
     // Status is 'open' if currently in use or 'closed' if available
     console.log(status)
     if (status == 'closed') {
       clearInterval(myTimer);
       doYourThing();
     }
   });
  }