簡體   English   中英

沒有服務器可用於處理請求時,Node.js需要更好地了解http.request操作

[英]Node.js Need a better understanding of http.request action(s) when no server is available to handle request

從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()方法req.end()發送實際請求。

另外,可以定義一個連接超時,我相信在建立連接並且基礎套接字以及該套接字在指定毫秒內處於非活動狀態時會發出此超時。

我的問題是,如果沒有服務器可以響應請求,該怎么辦? 如果沒有可用的服務器, request.end()觸發某些事件或錯誤情況?

從我看到的是,因為未建立連接,所以從未發出超時事件。

沒有服務器可用於處理請求時,調用代碼的正確行為是什么? 該請求已排隊,並且最終將在服務器聯機時得到處理。 那是對的嗎?

調用代碼在等待服務器響應時應該做什么? 調用是非阻塞的,並且如果您的主要任務是從發出的http.request讀取/處理數據,那么在等待服務器響應時代碼應該做什么? 是否在循環中使用setInterval 我想念什么?

我們將不勝感激,可以幫助您更深入地了解如何構建代碼以解決這種情況。

我的問題是,如果沒有服務器可以響應請求,該怎么辦?

請參閱文檔:

如果出現連接錯誤,將發出以下事件:

  • '插座'
  • '錯誤'
  • '關'

該請求已排隊,並且最終將在服務器聯機時得到處理。 那是對的嗎?

否。因為沒有服務器在監聽,所以連接嘗試將被拒絕。 沒有自動重試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM