0

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 つの連続したリクエストを撮影しようとしたため、この結論に達しました。私のコードはこのシナリオで問題なく動作します。

4

1 に答える 1