Koa - 为传入请求设置超时

Koa - set timeout on incoming requests

我正在尝试使用自定义中间件为传入请求设置超时,但没有抛出任何错误,似乎一旦 setTimeout 过期就不会调用中间件。

这是我正在尝试的代码:

app.use(async (ctx, next) => {
    setTimeout(() => {
        if (!ctx.headersSent) {
            ctx.throw(408, `processing time toke longer than ${config.PROCESSING_TIMEOUT}, request was timedout`);
        }
    }, config.PROCESSING_TIMEOUT);
    await next();
});

Koa(或节点的 http 服务器)有一种 built-in 控制请求超时的方法。
可以通过以 ms

为单位设置服务器超时来设置全局超时
server.timeout = config.PROCESSING_TIMEOUT;

在Koa的具体请求中可以指定超时时间如下

ctx.request.socket.setTimeout(config.PROCESSING_TIMEOUT);