2014-04-03 156 views
3

每當發送請求到NodeJS快速服務器需要超過120秒的響應時間時,都會出現請求超時錯誤。當服務器處理請求的時間超過120秒時,節點Express服務器連接超時

我嘗試增加服務器超時與request.setTimeOut(200000);,但它只適用於從本地主機訪問..並超時通過IP地址。同樣的問題,當運行在一個網站上。

請找我的服務器代碼保持120秒以上的要求:

var express = require('express') 
var app = express(); 
app.set('port', process.env.PORT || 3003); 
app.listen(app.get('port')); 
app.post('/cmfm', function (req, res) { 
    req.setTimeout(600000); 
    //req.socket.setKeepAlive(true,1);  
    var startTime = (new Date()).getTime(); 
    var response = {}; 
    response.data = 1; 
    console.log('request starts to process.. '); 
    setTimeout(function() { 
     var endTime = (new Date()).getTime(); 
     console.log('Total Time taken to run --> ' + (endTime - startTime)); 
     res.json(response); 
    }, 180000); 
}); 

客戶端代碼請求服務器:

$.ajax({ 
    url: "/cmfm", 
    type: "POST", 
    contentType: "application/json", // content type is must  
    cache: false, 
}).done(function (resultdata) { 
    alert('timout passed - ' + resultdata.data); 
}) 
.fail(function() { 
    alert('Timout failed'); 
}); 

  • 本地主機:3003
    它按預期工作。 AJAX做的是後180秒

  • IPADDRESS觸發:3003
    它觸發120秒後ajax.fail()恰好沒有完成,setTimeout的回調服務器新生力量。

請幫我解決這個問題。

回答

1

不知道,但你可以嘗試設置超時客戶端

$.ajax({ 
    url: "/cmfm", 
    type: "POST", 
    contentType: "application/json", 
    timeout: 200000, 
    cache: false, 
}).done(function (resultdata){ 
    alert('timout passed - ' + resultdata.data); 
}).fail(function() { 
    alert('Timout failed'); 
}); 

否則好像連接超時由客戶端和服務器(例如,代理服務器,防火牆,ECC之間的事情觸發... )

+0

謝謝..ajax超時不幫我...但現在解決..解決方案 - 剛剛從我的辦公室網絡拔出並通過外部網絡使用數據卡連接。所以,我猜它必須是防火牆/代理問題...進一步我縮小併發布在網絡端完成的確切更改。 – user2749751