2017-04-05 9 views
0
のサーバポートを割り当てます

サーバ設定はアプリケーションにポートを割り当てる前にXMLファイルに格納されているため、XMLファイルを読み込み、XML文字列をJSONに変換して読みやすくする必要があります。私はノードクラスタを使ってノードのパフォーマンスを向上させています。以下はコードスニペットです。NodeJSクラスタは、設定ファイル

//getschema.js 
module.exports = function(callback) { 
    var filepath='serverconfig.xml'; 
    var fs = require('fs'); 
    var xml2js = require('xml2js'); 
    fs.readFile(filepath, 'utf8', function (err, xmlStr) { 
     if (err) throw (err); 
     xml2js.parseString(xmlStr, {}, function(err, json){ 
      callback(json.serverconfig); 
     }); 
    });  
}; 

//server.js 
var serverdetails = require('./getschema'); 
var port; 
serverdetails(function(config) { 
     port  = config.port;//getting port values as 4000 
}); 

const cluster  = require('cluster'); 

if (cluster.isMaster) { 
    for (let i = 0; i < numCPUs; i++) { 
    cluster.fork(); 
    } 
} else { 
     console.log(port); //getting undefined 
     const server = app.listen(port,() => { 
      console.log(`Worker ${process.pid} started`); 
     }); 
     const io = require('socket.io')(server); 
} 

私は上記のようなコードに示されている今、直面していますどのような問題は、私は、サーバーポートとして設定ファイルから得たポートを割り当てることができないのです。ノードコードの実行値がCONSTサーバ= app.listen(ポート、()=> {

で利用できないことを非同期であるので、値は、 serverdetails(関数(設定){}で提供され?。

は、誰もがこの問題を修正するためのソリューションを提案してくれてありがとう

答えて

0

ただ、非同期server.listenを呼び出すことができます。

if (cluster.isMaster) { 
    (...) 
} else { 
    serverdetails(function(config) { 
     var port  = config.port;//getting port values as 4000 
     console.log(port); //getting the correct value 
     const server = app.listen(port,() => { 
      console.log(`Worker ${process.pid} started`); 
     }); 
     const io = require('socket.io')(server); 
    }) ; 
} 
+0

ありがとうございました@Lorenz –

関連する問題