2012-09-29 64 views
30

我其實在做針對ExpressJS服務器的一些負載測試,我注意到,由服務器發送響應包括「連接:保持活動」標頭。據我瞭解,連接將保持打開,直到服務器或客戶端發送「連接:關閉」標題。如何設置HTTP保持活動超時在服務器的NodeJS

在一些具體實施中,「連接:保持活動」頭配備了一個「保持活動」頭設置連接超時和連續請求的最大數量通過該連接發送。

例如:「保持活動:超時= 15,最大= 100」

有沒有一種方法(和是相關的)來設置一個Express服務器上的這些參數?

如果不是,你知道ExpressJS如何處理這個嗎?

編輯: 一些調查後,我發現默認的超時時間設置在node standard http library

socket.setTimeout(2 * 60 * 1000); // 2 minute timeout 

爲了改變這一點:

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end("Hello World"); 
}).on('connection', function(socket) { 
    socket.setTimeout(10000); 
}).listen(3000); 

反正它看起來仍然對我來說有點奇怪,服務器不會向客戶端發送任何有關其超時的提示。

編輯2: 感謝josh3736的評論。

setSocketKeepAlive與HTTP保持連接無關。這是一個TCP級別的選項,可以讓您檢測到連接的另一端已經消失。

回答

20

對於快遞3:

var express = require('express'); 
var app = express(); 
var server = app.listen(5001); 

server.listen(3000); 

server.on('connection', function(socket) { 
    console.log("A new connection was made by a client."); 
    socket.setTimeout(30 * 1000); 
    // 30 second timeout. Change this as you see fit. 
})