簡體   English   中英

如何使用Restify增加服務器端的套接字超時?

[英]How to increase the socket timeout on the server side using Restify?

我使用restify來實現一個node.js服務器。 基本上,服務器會根據HTTP POST請求運行一個耗時的過程,但是不知何故套接字被關閉,客戶端會收到如下錯誤消息:

[Error: socket hang up] code: 'ECONNRESET'

根據錯誤類型,套接字肯定在服務器端是關閉的。

我可以在restify的createServer方法中設置任何選項來解決此問題嗎?

編輯:長期運行的進程正在使用Mongoose運行MongoDB進程。 也許套接字掛起是由與MongoDB的連接引起的嗎? 如何增加貓鼬的超時時間? 我發現掛斷恰好在120秒內發生,所以可能是由於某些默認超時配置造成的嗎?

提前致謝!

您可以在req對象上使用標准套接字 ,並手動調用setTimeout來增加節點掛起套接字之前的時間。 默認情況下,node在所有套接字上都有一個2分鍾的計時器以使其處於不活動狀態,這就是為什么您正好在120秒時掛斷(這與restify無關)。 例如,設置一個處理程序使其在長時間運行的任務之前運行:

server.use(function (req, res, next) {
    // This will set the idle timer to 10 minutes
    req.connection.setTimeout(600 * 1000);
    res.connection.setTimeout(600 * 1000); //**Edited**
    next();
});

暫無
暫無

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

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