Nodejs - httpsRequest 在响应不是 200 的特定时间报告为未定义
Nodejs - httpsRequest reporting back as undefined at certain times when response is not 200
我有下面的JS函数来查询httpsRequest,有时当通过100个URL时,它会通过200个响应,有时它会失败,响应未定义。
assert.js:86
throw new assert.AssertionError({
AssertionError: 200 == undefined
at C:'Users'test'Desktop'node_modules'workers-STAGE.js:73:11
at ClientRequest.<anonymous> (C:'Users'test'Desktop'node_modules'workers-S
TAGE.js:54:16)
at ClientRequest.emit (events.js:107:17)
at TLSSocket.socketErrorListener (_http_client.js:271:9)
at TLSSocket.emit (events.js:129:20)
at net.js:459:14
at process._tickCallback (node.js:355:11)
我的函数如下
function _httpsRequest(path, callback) {
var options = {
hostname: domain,
port: 443,
path: path,
method: "GET",
rejectUnauthorized: false
};
var req = https.request(options, function(res) {
var dataStr = "";
res.on("data", function(chunk) {
dataStr += chunk;
});
res.on("end", function() {
return callback(null, res.statusCode, dataStr);
});
});
req.on("error", function(e) {
return callback(e);
});
req.end();
我的问题,有没有办法处理超时,或者响应时间是否比预期的要长,以便在测试 100 个 url 时不会突然停止。
我不确定这是否会解决问题,但也许这将确保您不会多次callback()
,以防
function _httpsRequest(path, callback) {
var options = {
hostname: domain,
port: 443,
path: path,
method: "GET",
rejectUnauthorized: false
};
var req = https.request(options, function(res) {
var dataStr = "";
res.on("data", function(chunk) {
dataStr += chunk;
});
res.on("end", function() {
if (responded)
return;
responded = true;
return callback(null, res.statusCode, dataStr);
});
});
var responded = false;
req.on("error", function(e) {
if (responded)
return;
responded = true;
return callback(e);
});
req.end();
}
如果问题主要发生在并发性问题时,请尝试在请求选项中启用keepAlive
。
var options = {
hostname: domain,
port: 443,
path: path,
method: "GET",
rejectUnauthorized: false,
keepAlive: true
};
相关文章:
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- angularjs$valid-on-dates在firefox中报告错误
- 定时Ajax进程在用户离开页面后继续
- 将菜单项与滚动绑定时出现Jquery错误
- 定时循环,使用Javascript在2个循环之间间隔x秒
- 定时循环,间隔10秒
- 如何在php/javascript中制作定时器和警报
- AngularJS依赖注入定时问题
- 使用c#中的邮件附件javascript在客户端机器上获取服务器端导出的crystal报告路径.下面的
- 如何将因果报应测试报告上传到声纳
- Jquery定时问题
- 移动定时触摸事件
- 用于本地主机上进程间通信的Javascript中的UDP
- "未捕获的语法错误:意外的标记<"当尝试使用谷歌'核心报告API
- 在Meteor js中生成PDF报告
- 如何使用Javascript使屏幕颜色随时间变化
- 双倒计时定时器
- javascript定时函数-预期的标识符
- 我可以把茉莉花规格报告器的输出写入文件吗