gpt4 book ai didi

javascript - 当没有服务器可用于处理请求时,Node.js 需要更好地理解 http.request 操作

转载 作者:行者123 更新时间:2023-12-03 01:23:23 24 4
gpt4 key购买 nike

从 Nodejs.v8.11.3 API 文档中,我试图更好地理解 http.request 的行为(形成嵌入式 http 模块)。据我了解,当您调用 http.request 方法时,如下所示:

var req = http.request( options, function(res) {
res.on('data',function(chunk) {...});
res.on('end',function() {...});
});

req.end();
req.setTimeout(2*60*1000, function() {
req.abort();
}

http.request 返回 http.ClientRequest 对象,并且 callback 提供设置处理程序来处理响应的方法。返回的 ClientRequest 对象表示一个“排队”请求,并且在调用 req.end() 方法之前不会发送实际请求。

此外,我们还可以定义一个连接超时,我相信当连接已建立并且底层套接字并且套接字在指定的毫秒内处于非事件状态时会发出该超时。

我的问题是如果没有服务器响应请求会发生什么?如果没有可用的服务器,request.end() 是否会触发某些事件或错误条件?

据我所知,由于没有建立连接,因此永远不会发出超时事件。

当没有服务器可以处理请求时,调用代码的正确行为是什么?该请求将排队并最终在服务器上线时得到处理。那是对的吗?

在等待服务器响应时,调用代码应该做什么?这些调用是非阻塞的,如果您的主要任务是从发出的 http.request 读取/处理数据,那么在等待服务器响应时您的代码应该做什么?是否在循环中使用 setInterval ?我错过了什么?

如果您能帮助我们更深入地了解如何构建代码来解决这种情况,我们将不胜感激。

最佳答案

My question is what happens if there is no server to respond to the request?

查看文档:

In the case of a connection error, the following events will be emitted:

  • 'socket'
  • 'error'
  • 'close'
<小时/>

The request is queued and will eventually be handled when a server comes on-line. Is that correct?

没有。连接尝试将被拒绝,因为没有服务器正在监听。没有自动重试。

关于javascript - 当没有服务器可用于处理请求时,Node.js 需要更好地理解 http.request 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com