message.signal


一个 <AbortSignal>,当消息在完成前被销毁,或当其底层套接字在请求处理或响应读取完成前关闭时,该 <AbortSignal> 就会被中止。这个信号是在首次访问时懒创建的——对于从未使用该属性的请求,不会分配任何 <AbortController>

🌐 An <AbortSignal> that is aborted when the message is destroyed before completion or when its underlying socket closes before request handling or response reading completes. The signal is created lazily on first access — no <AbortController> is allocated for requests that never use this property.

当客户端在请求中途断开连接时,这对于取消下游异步工作(例如数据库查询或 fetch 调用)非常有用。

🌐 This is useful for cancelling downstream asynchronous work such as database queries or fetch calls when a client disconnects mid-request.

import http from 'node:http';

http.createServer(async (req, res) => {
  try {
    const data = await fetch('https://example.com/api', { signal: req.signal });
    res.end(JSON.stringify(await data.json()));
  } catch (err) {
    if (err.name === 'AbortError') return;
    res.statusCode = 500;
    res.end('Internal Server Error');
  }
}).listen(3000);const http = require('node:http');

http.createServer(async (req, res) => {
  try {
    const data = await fetch('https://example.com/api', { signal: req.signal });
    res.end(JSON.stringify(await data.json()));
  } catch (err) {
    if (err.name === 'AbortError') return;
    res.statusCode = 500;
    res.end('Internal Server Error');
  }
}).listen(3000);