You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中寻求可完全控制每个Socket的HTTP Keep-Alive Agent库

Node.js中控制HTTP Keep-Alive Agent Socket的方案

Node.js原生的http.Agent(含https.Agent)本身就能满足你对Socket全控制的需求,无需额外第三方库:

  • 获取Socket全量信息:创建Agent时,可通过createConnection钩子或监听Agent的create、free事件拿到每个net.Socket实例。Socket对象自带所有连接属性,比如remoteAddress、remotePort、bytesRead、bytesWritten等,直接读取即可。
  • 终止慢响应Socket并创建新连接:针对请求对应的Socket,直接调用socket.destroy()就能主动终止连接。结合请求的timeout事件或自定义超时逻辑,触发销毁后,Keep-Alive Agent会自动创建新Socket处理后续请求。

示例代码

const http = require('http');

// 初始化Keep-Alive Agent
const keepAliveAgent = new http.Agent({ keepAlive: true });

// 监听Socket创建事件,获取新Socket信息
keepAliveAgent.on('create', (socket) => {
  console.log(`新Socket建立:${socket.remoteAddress}:${socket.remotePort}`);
});

// 发起请求
const req = http.request({
  hostname: 'example.com',
  port: 80,
  path: '/slow-response',
  agent: keepAliveAgent,
}, (res) => {
  // 处理响应逻辑
});

// 设置5秒超时,超时后销毁对应Socket
req.setTimeout(5000, () => {
  console.log('请求超时,终止当前Socket');
  req.socket.destroy();
});

req.end();

如果需要更精细化的管理(比如追踪每个Socket绑定的请求、批量管控连接),也可以基于原生Agent做封装,但原生能力已经完全覆盖你提到的核心需求。

内容的提问来源于stack exchange,提问作者Snurka Bill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:18:25