restify モジュールを使用してノード js Web サーバーを開始しています。
server = restify.createServer();
server.post('/getData', DataManager.getData);
パスのハンドラは/getData
次のようになります:-
DataManager.prototype.getData = function(request, response, next) {
var body = JSON.parse(request.body);
var key = body.key;
callback = function(err, instance) {
if(!err && instance) {
response.send(instance);
}
else {
response.send('err');
}
return next();
}
MongooseModel.findOne(key, callback);
}
異なるペイロードで2 つの同時リクエストを/getData
送信すると、サーバーはエラーをスロー[Error: Can't set headers after they are sent.]
し、2 番目のリクエストに応答しません。
私はこれに対する救済策を探しています。
--
restify はDataManager.getData
静的関数として扱うと思います。各リクエストを/getData
その新しいオブジェクトで処理する代わりに、そのDataManager
単一の静的インスタンスを使用しています。最初のリクエストが に従ってまだ実行されている間nodejs
、2 番目のリクエストは応答を送信しようとします。これが nodejs がcan't set headers after they are sent
. 並列リクエストではなく 2 つの連続したリクエストを撮影しようとしたため、この結論に達しました。私のコードはこのシナリオで問題なく動作します。