如何覆盖表达js默认Keep Alive行为

时间:2014-02-27 12:00:26

标签: c# javascript node.js http express

我一直在对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();
});

1 个答案:

答案 0 :(得分:5)

您必须设置标题而不是删除标题

app.use(function(req, res, next) {
    res.setHeader('Connection', 'close');
    next();
});