request.reusedSocket
添加於:v13.0.0、v12.16.0
- <boolean> 請求是否通過重用的套接字發送。
通過啟用keep-alive 的代理發送請求時,可能會重用底層套接字。但是如果服務器在不幸的時候關閉了連接,客戶端可能會遇到 'ECONNRESET' 錯誤。
const http = require('node:http');
// Server has a 5 seconds keep-alive timeout by default
http
.createServer((req, res) => {
res.write('hello\n');
res.end();
})
.listen(3000);
setInterval(() => {
// Adapting a keep-alive agent
http.get('http://localhost:3000', { agent }, (res) => {
res.on('data', (data) => {
// Do nothing
});
});
}, 5000); // Sending request on 5s interval so it's easy to hit idle timeout
通過標記請求是否重用套接字,我們可以根據它進行自動錯誤重試。
const http = require('node:http');
const agent = new http.Agent({ keepAlive: true });
function retriableRequest() {
const req = http
.get('http://localhost:3000', { agent }, (res) => {
// ...
})
.on('error', (err) => {
// Check if retry is needed
if (req.reusedSocket && err.code === 'ECONNRESET') {
retriableRequest();
}
});
}
retriableRequest();
相關用法
- Node.js http.ClientRequest request.removeHeader(name)用法及代碼示例
- Node.js http2.Http2ServerRequest request.rawHeaders用法及代碼示例
- Node.js http2.Http2ServerRequest request.url用法及代碼示例
- Node.js request.socket用法及代碼示例
- Node.js http.ClientRequest request.getHeaders()用法及代碼示例
- Node.js http2.Http2ServerRequest request.headers用法及代碼示例
- Node.js http.ClientRequest request.setHeader(name, value)用法及代碼示例
- Node.js request.writableEnded用法及代碼示例
- Node.js http.ClientRequest request.getHeaderNames()用法及代碼示例
- Node.js http.ClientRequest request.getHeader(name)用法及代碼示例
- Node.js http.ClientRequest request.hasHeader(name)用法及代碼示例
- Node.js http.ClientRequest request.getRawHeaderNames()用法及代碼示例
- Node.js http.ClientRequest request.socket用法及代碼示例
- Node.js require.cache用法及代碼示例
- Node.js require.main用法及代碼示例
- Node.js require.extensions用法及代碼示例
- Node.js require(id)用法及代碼示例
- Node.js http.ServerResponse response.statusCode用法及代碼示例
- Node.js readStream.isRaw用法及代碼示例
- Node.js response.writeContinue()用法及代碼示例
- Node.js http2.Http2ServerResponse response.removeHeader(name)用法及代碼示例
- Node.js response.removeHeader()用法及代碼示例
- Node.js http.ServerResponse response.getHeaderNames()用法及代碼示例
- Node.js http2.Http2ServerResponse response.hasHeader(name)用法及代碼示例
- Node.js http.ServerResponse response.removeHeader(name)用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 request.reusedSocket。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。