2016-05-26 7 views
0

Node.js用のユーザーランドライブラリを作成していて、ライブラリにはサーバーが含まれています。ユーザーがサーバーを2回起動するコマンドを発行することは可能ですが、サーバーは再起動を必要としません。一度起動するだけで済みます。ライブラリーは常にサーバーが既にライブであるかどうかをチェックする必要があるため、ユーザーはライブラリーがユーザーにポートXで既にリスニングしていることを伝えるのをユーザーが待つ時間を最小限に抑えたい。私はシステムが "すでに聞いている"というエラーを待つことができましたが、それより速く失敗する方法はありますか?他のリソースをロックする方法はありますか?それを行う最善の方法は何ですか?Node.js Express - ポート競合以外に2回サーバーを起動しないようにする最良の方法

これは、常に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ライブラリですか?

答えて

2

.server_statusファイルは、サーバーが起動していることを示すために、いつでもどこかの場所に置くことができます。

開始時にそれを探して(存在する場合は終了する)、サーバーを起動するときに作成し、サーバーが停止したときに削除するだけです。このアプローチは多くのアプリケーションで使用されています

関連する問題