1
我正在使用Express v4.13.4开发Node v4.2.4应用程序。现在我想增加特定上传路由的超时时间。节点Express每个路由的特定超时值
从我读过的和经历:
- the default Node server timeout is 2 minutes
- a Node socket has no timeout by default
- there's middleware from Express to handle timeouts
然而,试图执行connect-timeout中间件上传时,我迷路了路线。
应用设置
const app = express();
app.use(cors());
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: false }));
app.use(passport.initialize());
app.use('/uploads', uploadRoutes);
app.use(errorHandler);
function errorHandler(err, req, res, next) {
if (err.code && err.code === 'ETIMEDOUT') {
if (!res.headersSent) {
res
.status(408)
.send({
success: true,
message: 'Timeout error'
});
}
}
next(err);
}
const server = app.listen(config.port);
上传路线定义
router.route('/:uploadId/upload-files')
.post(timeout('3m'),
require('./actions/upload-files').prepareHandler,
require('./actions/upload-files').uploadHandler(),
require('./actions/upload-files').responseHandler);
然而,在上传文件时,我看到从express-timeout
误差仅在命令行控制台3分钟后。该请求仍在进行中,并且不返回状态码408。
4分钟后,我终于看到408状态和'超时错误'作为响应对象的一部分。
对于其他路线的请求,我在4分钟后收到net::ERR_EMPTY_RESPONSE
错误。
如果我记录server.timeout
的值,则值为120000
(2分钟)。
我的问题
- 在哪里可以四分钟一可能是从哪里来的?是否因为可能有前面的OPTIONS请求?
- 服务器&套接字超时与如何针对特定路由正确设置它们有什么区别?