我试图在使用HTTP的HTTP客户端上设置超时.没有运气的请求.到目前为止,我所做的是:

var options = { ... }
var req = http.request(options, function(res) {
  // Usual stuff: on(data), on(end), chunks, etc...
}

/* This does not work TOO MUCH... sometimes the socket is not ready (undefined) expecially on rapid sequences of requests */
req.socket.setTimeout(myTimeout);  
req.socket.on('timeout', function() {
  req.abort();
});

req.write('something');
req.end();

有什么提示吗?

推荐答案

为了澄清这answer above个问题:

现在可以使用timeout选项和相应的请求事件:

// set the desired timeout in options
const options = {
    //...
    timeout: 3000,
};

// create a request
const request = http.request(options, response => {
    // your callback here
});

// use its "timeout" event to abort the request
request.on('timeout', () => {
    request.destroy();
});

Node.js相关问答推荐

序列化事务未按预期工作

如何在node.js中以随机顺序调用函数并按顺序操作

无法从ejs Web应用程序中的正文中提取数据

编辑Mongoose中的对象嵌套数组

在Android Studio中react 本机构建失败:未正确检测到Node.js版本

如何在docker容器上正确安装nodejs?

Mongodb - 在数组数组中查找()

Redis Typescript 删除方法类型转换

动态设置元数据,无需重复请求 NextJS 13

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

如何从动态Typescript 文件加载模块

如何调用同名的两个函数?

在数组的另一个对象中获取数组的mongoose 对象

AWS EC2 npm install 突然很慢

如何从 github 编译第三方扩展?

try 运行迁移时的 Typeorm:缺少必需的参数:dataSource

使用 node.js 执行一个 exe 文件

为什么 JavaScript 的 parseInt(0.0000005) 打印5?

代理后面的凉亭

使用 gzip/deflate 压缩的简单 HTTP 请求