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

时间:2016-05-26 21:13:31

标签: node.js http tcp locking port

所以我正在为Node.js创建一个用户区域库,该库包含一个服务器。用户可以发出一个启动服务器两次的命令 - 但服务器不需要重启,只需要启动一次。我想最小化用户必须等待库告诉用户服务器已经在端口X上侦听的时间量,因为这可能会发生很多,因为库总是需要检查服务器是否已经存在。我可以等待系统"已经在听#34;错误,但有没有办法比这快失败?有没有办法锁定其他资源,最好的方法是什么?

请注意,这将始终是在localhost上运行的服务器。

我发现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库可能是最好的方法吗?

1 个答案:

答案 0 :(得分:2)

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

只需要在启动时查找(如果存在则退出),在启动服务器时创建它,在服务器关闭时删除。许多应用程序都使用这种方法