に答えたです:Nodejsエクスプレス不要な行動:コード二つの異なるHTTPリクエストを取得は、ユニークな答えここ
FILE: server.js
var express = require('express'),
app = express(),
useragent = require('express-useragent'),
compression = require('compression'),
vhost = require('vhost');
app.use(vhost("blabla.com", 'app.js'));
app.disable('x-powered-by');
app.use(compression());
app.use(useragent.express());
app.listen(80);
FILE app.js
var useragent = require('express-useragent'),
express = require('express'),
sessao = require('express-session'),
armazenamento_ficheiros = require('session-file-store')(sessao),
compression = require('compression'),
app = express(),
favicon = require('serve-favicon');
global.uuid = require('uuid');
app.all('/u/my.json', function (req, res) {
var body = '';
p.on('data', function (d) {
body += d;
});
p.on('end', function() {
var g = require('./gateway');
g.e(body,res);
}, 'utf-8');
});
module.exports = app;
FILE:gateway.js
module.exports = {
e: function (body,res) {
//connects to database using data in body and send results to client....
res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);
res.header('Last-Modified', (new Date()).toUTCString());
res.header("Content-type", "application/json; charset=utf-8");
res.send(JSON.stringify({"a":1}));
}
};
問題は時々、クライアントは、2つのHTTP要求を行い、ランダムに、両方の中で答えていることです対応する応答を取得する各HTTP要求の代わりにユニークな応答を返します。この問題は、http要求の1つがデータベースに要求を出して(応答を取得するのに遅れを生む)、別の要求で応答されたように見えます。ヘッダーを送信するので、エラーが発生します。
私はgateway.jsファイルがロードされ、各HTTPリクエストで実行されていることを確認しますが、なぜそれらが混ざっているのか分かりません。私のコードで何が間違っていますか?どんな助けでも感謝します。ありがとうございました。
'global.make_reply'関数では、' r'のヘッダを設定しているので、 'r'は' response'オブジェクトであると仮定しましたが、 'r.send(r ) '。これはつまり、あなたが実際に '' {"a":1} "を実行していることを意味する' global.make_reply(JSON.stringify({"a":1})) ")'。 –
私はサンプルコードを編集しました。 vhostを使って作業するには、新しいアプリケーションを読み込むことを提案しました(エクスプレスを含む)。 – user1774309
2つの別々のポートでリッスンしている2つのサーバーを実行している場合を除き、このコンテキストで「vhostを使用する」とは何を意味するのか、なぜ2つの 'app'オブジェクトを作成するのかはわかりません。 – jfriend00