Node.js Express - 除了端口冲突之外避免两次启动服务器的最佳方法

Node.js Express - best way to avoid starting a server twice besides port conflict

所以我正在为 Node.js 创建一个用户态库,该库包含一个服务器。用户可以发出一个命令来启动服务器两次——但服务器不需要重新启动,它只需要启动一次。我想尽量减少用户等待库告诉用户服务器已经在端口 X 上监听的时间,因为这种情况可能经常发生,因为库总是需要检查服务器是否已经上线.我可以等待系统 "already listening" 错误,但有没有比这更快失败的方法?有没有办法锁定其他资源,最好的方法是什么?

请注意,这始终是本地主机上的服务器 运行。

我发现 tcp-ping 库可以非常快速地确定服务器是否可用。

const tcpp = require('tcp-ping');

tcpp.probe(server.host, server.port, function (err, available) {

     //callback always seems to fire within 10ms...

    if(err){

      //some crappy error

    }
    else if(available){
         //server is live

    }
    else{
        // server is not live

   }


});

tcp-ping 库可能是执行此操作的最佳方法吗?

您始终可以在某个位置保留一个 .server_status 文件以指示服务器已启动。

只需要在启动时查找(存在则退出),启动时创建,宕机时删除。许多应用程序都使用这种方法