2017-10-13 4 views
2

初心者の方はウェブプログラミングを初めて利用しています。私は、接続されたクライアントが気象情報を利用できるように、MEANスタックを使用してJSONファイルをサーバー内に作成しています。Node.jsクライアントアクセス可能なJSONファイルを更新する

node-scheduleライブラリを使用して毎時JSONファイルを更新しています。クライアントがファイルのデータに同時にアクセスしようとすると、サーバーからファイルを絶えず更新することで並行性の問題が発生しますか?以下

コードスニペット:

server.js

function updateWeatherFile() { 
    var weather = require('weather-js'); 
    var w = ""; 
    weather.find({search: weatherSearch, degreeType: 'C'}, function(err, result) { 
    if(err) 
     console.log(err); 
    w = JSON.stringify(result, null, 2); 
    fs.writeFile('public/weather.json', w, function(err) { 
     if(err) { 
     console.log(err); 
     } 
    }); 
    }); 
} 

if(scheduleWeather) { 
    var schedule = require('node-schedule'); 
    var sequence = '1 * * * *'; // cron string to specify first minute of every hour 
    var j = schedule.scheduleJob(sequence, function(){ 
    updateWeatherFile(); 
    console.log('weather is updated to public/weather.json at ' + new Date()); 
    }); 
} 
else { 
    updateWeatherFile(); 
} 

client_sample.js

// get the current weather from the server 
$http.get('weather.json').then(function(response) { 
    console.log(response['data'][0]['current']); 
    vm.weather = response['data'][0]["current"].skytext; 
    vm.temperature = response['data'][0]["current"].temperature; 
}); 

答えて

0

NodeJsは、シングルスレッド環境です。

ファイルを読み書きするノードは外部プロセスを開始し、最終的にファイルにアクセスして読み書きを同時に行うことができます。この場合、並行処理はNodeによって処理されるのではなく、Operational Systemによって処理されます。

この並行処理がプログラムに悪影響を与えると思われる場合は、ロックファイルをコメントとして使用し、hereと説明してください。

+0

感謝します。ありがとうございました。 – JeanLucLaForge

関連する問題