Express 5 connect-timeout 教程

本系列基于 Express 官方资源页中的 timeout 中间件 编写,适用于当前项目的 Express 5、TypeScript 和 CommonJS 编译模式。

这里的 npm 包名是:

connect-timeout

它解决的是 Express 应用层的“处理期限”,不是 Node.js headersTimeoutrequestTimeoutkeepAliveTimeout,也不是 Axios 的客户端等待时间。

学习路线

  1. 01 工作原理、API 与配置
  2. 02 超时取消、数据库写入与客户端中止
  3. 03 生产环境搭配、错误处理与测试

已有的 Express 5 超时设置指南 负责解释 Axios、Node.js HTTP Server、反向代理和 Route deadline 的整体关系。本系列进一步深入 connect-timeout 本身。

最重要的结论

connect-timeout 触发
  = 设置 req.timedout
  + 发出 timeout 事件
  + 默认向 Express 传递 503 错误

connect-timeout 触发
  ≠ 自动停止数据库查询
  ≠ 自动停止 fetch
  ≠ 自动回滚事务
  ≠ 自动终止 CPU 计算

因此,超时治理包含两部分:

  1. 对客户端及时返回超时响应;
  2. 把取消信号继续传给真正耗时的资源。

只完成第一部分,服务器仍可能在后台继续消耗 CPU、内存、数据库连接和网络连接。

官方资料