2012-09-29 5 views
30

실제로 ExpressJS 서버에 대한 부하 테스트를하고 있는데 서버에서 보내는 응답에 "연결 : 연결 유지"헤더가 포함되어 있음을 확인했습니다. 내가 이해하는 한, 서버 또는 클라이언트가 "Connection : Close"헤더를 보낼 때까지 연결은 열린 상태로 유지됩니다.nodejs 서버에서 HTTP 연결 유지 시간 제한을 설정하는 방법

일부 구현에서는 "연결 : 연결 유지"헤더에 연결 시간 초과 및이 연결을 통해 전송되는 최대 연속 요청 수를 설정하는 "연결 유지"헤더가 제공됩니다. 예를 들어

: "연결 유지 : 제한 시간 = 15, 최대 = 100"

방법이 있나요 (그리고 관련) 익스프레스 서버에서 이러한 매개 변수를 설정하는 방법?

그렇지 않은 경우 ExpressJS가 어떻게 처리하는지 알고 계십니까?

편집 :

이를 변경하려면
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); 

여전히 보이는 몇 가지 조사 후 , 나는 기본 시간 제한이 node standard http library에 설정되어 있는지 발견 서버가 타임 아웃과 관련하여 클라이언트에게 힌트를 보내지 않는다는 것을 나에게 조금 이상하다.

Edit2가 : 자신의 의견에 대한 josh3736에 감사합니다.

setSocketKeepAlive는 HTTP 연결 유지와 관련이 없습니다. 이것은 연결의 다른 쪽 끝이 사라 졌음을 감지 할 수있게 해주는 TCP 수준의 옵션입니다. 익스프레스 3

답변

20

:

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. 
}) 
관련 문제