nodejs/node

https.request timeout options doesn't work

已關閉

#23,282 建立於 2018年10月5日

 (10 則留言) (4 個反應) (0 位負責人)JavaScript (35,535 個分叉)batch import
help wantedhttpsstale

倉庫指標

星標
 (117,218 顆星)
PR 合併指標
 (平均合併 18天 17小時) (30 天內合併 219 個 PR)

描述

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.

貢獻者指南