我一直在对nodejs express服务器进行一些压力测试,并注意到它默认包含一个“Connection:Keep-Alive”标头。我的应用程序将是一个暴露给客户端的web api,因此在客户端发布数据并收到响应之后,我不需要保持连接状态。
不幸的是,由于客户端的限制,这需要是同步操作。我们已经有一个C#Web API,我们打算用nodejs服务器替换它,这个API不会在HTTP响应上附加一个Keep Alive标头。 我找不到覆盖此行为的方法。我已尝试使用app.disable并删除中间件上的标头,但它不起作用(但它适用于其他HTTP标头)。
var express = require('express'),
app = express(),
port = 58458;
app.configure(function(){
app.use(express.bodyParser());
app.use(app.router);
});
app.use(function (req, res, next) {
res.removeHeader('Connection','Close');
next();
});
app.disable('Connection');
var counter = 0;
app.listen(port, function() { console.log('escutando') } );
app.post("/api/order", function(req, res) {
counter = counter + 1;
var r = req.body;
if (counter%100 === 0)
console.log(counter);
res.json(1);
res.end();
});
答案 0 :(得分:5)
您必须设置标题而不是删除标题
app.use(function(req, res, next) {
res.setHeader('Connection', 'close');
next();
});