nodejs/node

https.request timeout options doesn't work

Open

#23.282 aperta il 5 ott 2018

Vedi su GitHub
 (10 commenti) (4 reazioni) (0 assegnatari)JavaScript (35.535 fork)batch import
help wantedhttpsstale

Metriche repository

Star
 (117.218 star)
Metriche merge PR
 (Merge medio 18g 17h) (219 PR mergiate in 30 g)

Descrizione

Node version 8.11.3. 64-bit Windows 8.1

As I understood from docs, timeout property in https.request options sets socket connection timeout. I set it to minimum - 1 millisecond and it should definitely trigger 'timeout' event.

    const options = {
        host: 'yobit.net',
        path: '/api/3/depth/ltc_btc',
        timeout: 1
    }
    const req = https.request(options, res => {
    });
    
    req.on('timeout', () => {
        console.error('request timeout');
    })
    req.end();

I expect 'reqest timeout' console message but it doen't appear.

However, when I create my custom https Agent with overriden createConnection method that sets initial socket timeout to 1 millisecond there:

MyAgent.prototype.createConnection = function() {
    const socket = https.Agent.prototype.createConnection.apply(this, arguments);
    socket.setTimeout(1);
    return socket;
}

and run the first code with agent parameter set to my custom agent, now it fires 'timeout' event.

Guida contributor