簡體   English   中英

node.js HTTP Server,Request和Response Timeouts之間的區別

[英]Difference Between node.js HTTP Server, Request, and Response Timeouts

當談到超時HTTP請求時,看起來node.js有三個單獨的超時:

  1. server.setTimeout http://nodejs.org/api/http.html#http_server_settimeout_msecs_callback
  2. request.setTimeout http://nodejs.org/api/http.html#http_request_settimeout_timeout_callback
  3. response.setTimeout http://nodejs.org/api/http.html#http_response_settimeout_msecs_callback

任何人都可以澄清每種方法之間的差異以及為什么有人想要使用每種方法?

  1. 您正在node.js應用程序中運行Web服務器。 這將確定節點在關閉之前將客戶端請求連接打開而沒有流量的時間長度,因為空閑超時。 一個例子是用戶在從您的應用程序下載大文件時失去了他們家中的電量。 您將此設置為一次,它將應用於您的服務器接收的所有客戶端連接。
  2. 這適用於從節點程序到遠程Web服務器的傳出請求。 因此,您編寫了一個刮刀來下載文件,並且您的Internet連接在下載時會死亡。 這確定了節點何時最終放棄等待來自遠程端的數據。 這只會影響特定請求,因為底層TCP連接將被關閉,每個傳出請求將獲得不同的TCP連接。
  3. 由於HTTP請求和相應的響應通過相同的底層TCP套接字發生,我的理解是req.setTimeoutres.setTimeout最終導致相同的底層系統調用,它使用相應的libuv / os調用設置TCP套接字本身的超時。 所以我認為兩者都是等價的,你可以選擇哪一個更方便,或者哪一個讓你覺得語義更清晰。 我可能錯了,盡管如此,如果有其他人知道肯定會隨意糾正我。

通常默認值是合理的。 但是,如果您知道很多客戶端的連接速度非常慢或很復雜(您在偏遠地區或衛星或其他任何地方提供移動電話),並且實際上仍然可行的連接,我們可能需要設置更長時間超時。 如果您知道客戶端連接良好(如同一數據中心中的服務器),並且您希望更積極地釋放資源,則可能需要將它們設置得更短。

暫無
暫無

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

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