1. ホーム
  2. http

[解決済み] Nodeでhttp.request()にタイムアウトを設定する方法は?

2022-12-06 01:18:43

質問

http.requestを使用するHTTPクライアントでタイムアウトを設定しようとしていますが、うまくいきません。今のところ、私がしたことはこれです。

var options = { ... }
var req = http.request(options, function(res) {
  // Usual stuff: on(data), on(end), chunks, etc...
}

/* This does not work TOO MUCH... sometimes the socket is not ready (undefined) expecially on rapid sequences of requests */
req.socket.setTimeout(myTimeout);  
req.socket.on('timeout', function() {
  req.abort();
});

req.write('something');
req.end();

何かヒントは?

どのように解決するのですか?

を明確にするために の答えを明らかにするために :

これで timeout オプションと対応するリクエストイベントが追加されました。

// set the desired timeout in options
const options = {
    //...
    timeout: 3000,
};

// create a request
const request = http.request(options, response => {
    // your callback here
});

// use its "timeout" event to abort the request
request.on('timeout', () => {
    request.destroy();
});