簡體   English   中英

Nodejs和express服務器在2分鍾后關閉連接

[英]Nodejs and express server closes connection after 2 minutes

我使用Express 4.X和節點js 0.12。

我的一條路線是文件上傳和處理,對於某些文件,上傳和處理需要超過2分鍾的默認超時。 我試圖將timeout設置為超過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分鍾后繼續關閉連接。 嘗試將節點版本更改為舊版本但沒有成功。 嘗試在網上找到的所有變化,但連接仍然關閉...

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

2分鍾是默認的。

更新的答案

嘗試這個:

 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()

此外,它可能是一個瀏覽器問題。 這個

怎么樣:

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

經過幾個小時的嘗試,每個答案都可用,我已經與提琴手一起檢查了這個請求。 事實證明,在我的開發環境中,我使用瀏覽器同步來自動刷新任何更改的瀏覽器窗口。 在fiddler中,我注意到上傳POST請求瀏覽器同步很長時間將其綁定到有2分鍾超時的套接字連接。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM