问题
Node 的默认配置会在 2 分钟后超时请求。我想将请求超时更改为:
- “正常”请求 1 分钟
- 提供静态文件(在本例中为大 Assets )的请求需要 5 分钟
- 8 小时上传(每个请求几千张图片)
研究
通读Node's documentation ,我发现定义超时的方法有很多种。
我正在使用 Express,它还提供 middleware为(特定)路由定义超时。我试过了,without success .
问题
我对如何正确配置全局和每个路由的超时限制感到困惑。我应该配置所有上述超时吗?设置服务器超时与设置套接字或请求超时有何不同?
最佳答案
正如我在 your other question concerning the usage of the timeout middleware 上看到的那样,您使用它的方式有所不同。
参见 timeout-connect middleware. 的文档
将您的 errorHandler-function 作为 EventListener 添加到请求中,因为它是 EventEmitter 并且中间件会导致它发出 timeout
-event:
req.on("timeout", function (evt) {
if (req.timedout) {
if (!res.headersSent) {
res
.status(408)
.send({
success: true,
message: 'Timeout error'
});
}
}
});
这是在中间件堆栈之外调用的,导致对 next(err)
的函数调用无效。此外,您必须记住,如果在请求挂起服务器端时发生超时,您必须阻止您的服务器代码进一步处理此请求(因为 header 已经发送并且其底层连接将不再可用)。
关于node.js - Node 服务器、套接字、请求和响应超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38926213/