[英]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.