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請求?
- 服務器&套接字超時與如何針對特定路由正確設置它們有什麼區別?