如何在节点js中保持代理后面的连接

nod*_*der 7 node.js

我正在向https外部API 发送GET类型请求.

首先,我创建了https代理如下:

import https from 'https';

const KeepAliveAgent = new https.Agent( {
    keepAlive: true
} );
Run Code Online (Sandbox Code Playgroud)

然后设置请求选项如下:

let options = {
                url: 'externalapiurl',
                method: "GET",
                qs: queryString,
                agent: KeepAliveAgent 
            };
Run Code Online (Sandbox Code Playgroud)

我刚刚提到了url和qs的示例字符串,在原始请求中我使用的是实际的api url和querystring,然后我发送请求如下:

            console.time( "requestTime" );
            request( options, ( err, response, body ) => {
                if ( err ) {
                    logger.warn( err.message );
                }
                console.timeEnd( "requestTime" );
});
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我正在打印上面的响应所花费的时间,当我在代理服务器后发送请求时,这个时间要多得多,当我不使用代理服务器时,它花费的时间不到半秒但是代理服务器需要大约3秒,所以似乎"保持活力"不是代理背后的工作,如何使这项工作?我使用https-proxy-agent节点模块尝试了相同的请求,但问题仍然存在,感谢任何帮助.

小智 1

所有关于测量 HTTP/HTTPS 代理的性能。 https://blog.thousandeyes.com/measuring-performance-with-http-proxies/][1]

您给出的代码似乎是正确的。我建议在nodejs中使用socketio来实现你正在做的这样的实现。