当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js http.ClientRequest request.reusedSocket用法及代码示例


request.reusedSocket

添加于:v13.0.0、v12.16.0
  • <boolean> 请求是否通过重用的套接字发送。

通过启用keep-alive 的代理发送请求时,可能会重用底层套接字。但是如果服务器在不幸的时候关闭了连接,客户端可能会遇到 'ECONNRESET' 错误。

const http = require('node:http');

// Server has a 5 seconds keep-alive timeout by default
http
  .createServer((req, res) => {
    res.write('hello\n');
    res.end();
  })
  .listen(3000);

setInterval(() => {
  // Adapting a keep-alive agent
  http.get('http://localhost:3000', { agent }, (res) => {
    res.on('data', (data) => {
      // Do nothing
    });
  });
}, 5000); // Sending request on 5s interval so it's easy to hit idle timeout

通过标记请求是否重用套接字,我们可以根据它进行自动错误重试。

const http = require('node:http');
const agent = new http.Agent({ keepAlive: true });

function retriableRequest() {
  const req = http
    .get('http://localhost:3000', { agent }, (res) => {
      // ...
    })
    .on('error', (err) => {
      // Check if retry is needed
      if (req.reusedSocket && err.code === 'ECONNRESET') {
        retriableRequest();
      }
    });
}

retriableRequest();

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 request.reusedSocket。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。