2015-10-01 95 views
5

使用Express 4.X和節點js 0.12的Im。Nodejs和快速服務器在2分鐘後關閉連接

我的一條路線是文件上傳和處理,對於一些文件,上傳和處理需要超過2分鐘的默認超時。我曾嘗試將超時值設置爲超過2分鐘,但它不起作用,服務器每次都在2分鐘後關閉連接。

server.timeout = 60 * 60 * 1000; // still closes after 2 minutes 
server.on('connection', function(socket) { 
    socket.setTimeout(700 * 1000); // still closes after 2 minutes 
}); 

res.setTimeout(0);// still closes after 2 minutes 
req.setTimeout(0);// still closes after 2 minutes 
res.connection.setTimeout(0);// still closes after 2 minutes 

連接超時中間件也沒有幫助,它只是在2分鐘後關閉連接。嘗試將節點版本更改爲舊版本,但沒有成功。 嘗試在網上找到的所有變化,但連接仍然關閉...

+0

[Express.js響應超時]的可能的複製(http://stackoverflow.com/questions/21708208/express-js-response-timeout) – Ionut

+0

嘗試,作爲阱,連接中間件產生相同的2分鐘超時... –

+0

閱讀該頁面的最後一個答案。 – Ionut

回答

-1

試圖每隔幾個小時後回答我提供了運行與小提琴手該請求檢查。原來,在我的開發環境中,我使用瀏覽器同步來自動刷新瀏覽器窗口的任何變化。在提琴手我注意到,與上傳POST請求瀏覽器同步一長串綁定到2分鐘超時的套接字連接。

關閉瀏覽器同步代理後,第一個解決方案就像魅力一樣工作。

server.on('connection', function(socket) { 
    socket.setTimeout(600 * 60 * 1000); // now works perfectly... 
}) 
4

server.setTimeout()是爲所有連接設置HTTP連接超時的方法。

默認2分鐘。

修訂ANSWER

試試這個:

var express = require('express'); 
 
var http = require('http'); 
 

 
var app = module.exports.app = express(); 
 
var server = http.createServer(app); 
 
server.setTimeout(10*60*1000); // 10 * 60 seconds * 1000 msecs 
 
server.listen(appConfig.port, function() { 
 
    var logger = app.get('logger'); 
 
    logger.info('**** STARTING SERVER ****'); 
 
});

或者這樣:

http.request(url).setTimeout() 

而且,它可以是一個瀏覽器的問題。閱讀this

+0

試過在120000ms後仍然關閉連接 –

+0

我已經更新了我的答案。現在試試。 – Ionut

1

怎麼樣:

server.on('connection', function(socket) { 
    socket.setTimeout(5 * 60 * 1000); 
    socket.once('timeout', function() { 
    process.nextTick(socket.destroy); 
    }); 
}); 
+0

如上所述,超時中間件未按預期工作,連接在2分鐘後關閉。 –

+0

我看到了,所以我正在更新我的答案,現在檢查(: – num8er

+0

不,還是一樣:(這讓我瘋狂,最瘋狂的部分,在一個月前去了socket.setTimeout()確實修復,突然 –