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

我使用restify来实现一个node.js服务器。 基本上,服务器每HTTP POST请求运行一个耗时的过程,但不知怎的,套接字被closures,客户端收到这样的错误信息:

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

根据错误types,服务器端的套接字肯定是closures的。

有没有什么办法可以在restify的createServer方法中设置来解决这个问题?

编辑:长时间运行的过程是使用Mongoose来运行MongoDB进程。 也许这也可能是套接字挂断是由连接到MongoDB造成的? 如何增加Mongoose的超时? 我发现挂机正好在120秒内发生,所以可能是因为某些默认超时configuration?

提前致谢!

您可以使用req对象上的标准套接字 ,并手动调用setTimeout来增加节点挂起套接字之前的时间。 默认情况下,节点在所有套接字上都有一个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(); });