99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

NodeJs 常見網絡操作問題

2021-09-15 10:18 更新

使用NodeJS操作網絡,特別是操作HTTP請求和響應時會遇到一些驚喜,這里對一些常見問題做解答。

  • 問: 為什么通過headers對象訪問到的HTTP請求頭或響應頭字段不是駝峰的?

    答: 從規(guī)范上講,HTTP請求頭和響應頭字段都應該是駝峰的。但現(xiàn)實是殘酷的,不是每個HTTP服務端或客戶端程序都嚴格遵循規(guī)范,所以NodeJS在處理從別的客戶端或服務端收到的頭字段時,都統(tǒng)一地轉換為了小寫字母格式,以便開發(fā)者能使用統(tǒng)一的方式來訪問頭字段,例如headers['content-length']。

  • 問: 為什么http模塊創(chuàng)建的HTTP服務器返回的響應是chunked傳輸方式的?

    答: 因為默認情況下,使用.writeHead方法寫入響應頭后,允許使用.write方法寫入任意長度的響應體數(shù)據,并使用.end方法結束一個響應。由于響應體數(shù)據長度不確定,因此NodeJS自動在響應頭里添加了Transfer-Encoding: chunked字段,并采用chunked傳輸方式。但是當響應體數(shù)據長度確定時,可使用.writeHead方法在響應頭里加上Content-Length字段,這樣做之后NodeJS就不會自動添加Transfer-Encoding字段和使用chunked傳輸方式。

  • 問: 為什么使用http模塊發(fā)起HTTP客戶端請求時,有時候會發(fā)生socket hang up錯誤?

    答: 發(fā)起客戶端HTTP請求前需要先創(chuàng)建一個客戶端。http模塊提供了一個全局客戶端http.globalAgent,可以讓我們使用.request.get方法時不用手動創(chuàng)建客戶端。但是全局客戶端默認只允許5個并發(fā)Socket連接,當某一個時刻HTTP客戶端請求創(chuàng)建過多,超過這個數(shù)字時,就會發(fā)生socket hang up錯誤。解決方法也很簡單,通過http.globalAgent.maxSockets屬性把這個數(shù)字改大些即可。另外,https模塊遇到這個問題時也一樣通過https.globalAgent.maxSockets屬性來處理。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號