Timeout in Node.JS

Thanks for answers in https://stackoverflow.com/questions/6214902/how-to-set-a-timeout-on-a-http-request-in-node
The problem can mainly divided into two part in my implemention:

  • connection timeout
  • response timeout
  1. connection timeout
    On request stage:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 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.abort();
    });
  2. response timeout
    On response stage:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    var options = { ... }
    var req = http.request(options, (res) => {
    // Usual stuff: on(data), on(end), chunks, etc...
    });
    req.on('socket', (socket) => {
    socket.setTimeout(myTimeout);
    socket.on('timeout', () => {
    req.destroy();
    });
    });
    req.on('error', (err) => {
    if (err.code === "ECONNRESET") {
    console.log("Timeout occurs");
    //specific error treatment
    }
    //other error treatment
    });
    req.end();