这是代码:
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}));
}
};
问题是,有时,客户端发出两个 http 请求,并且随机地,都以唯一的答案回复,而不是每个 http 请求都得到相应的回复。问题似乎是当其中一个 http 请求向数据库发出请求(造成获得答案的延迟)并在另一个请求中得到答复时。由于我发送标题,它给出了错误。
我检查了 gateway.js 文件是否随每个 http 请求一起加载和执行,但我不明白为什么它们会混在一起。我的代码有什么问题?任何帮助将不胜感激。谢谢你。