模拟NodeJS中发出的“Socket挂断”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟NodeJS中发出的“Socket挂断”相关的知识,希望对你有一定的参考价值。
我想通过实现一个简单的错误服务器请求/响应方案来模拟发出的“Socket挂断错误”。
这是使用本机http模块的简单故障服务器方案。 makeRequest
函数发出Socket hang up
错误。
var server = http.createServer((req, res) => {
console.log('got request');
res.write('efgh')
res.end();
});
server.listen(8080, function() {
makeRequest(() => {
server.close();
});
});
function makeRequest(cb) {
var req = http.request('http://localhost:8080', function(res) {
console.log('got response')
res.resume();
cb();
})
req.write('abcd');
}
关于如何模拟发出此错误的任何建议,以便我可以在下面的request模块模式中处理它?最终的测试是运行下面的代码块并验证通过捕获发出的Socket hang up
错误,pipe
命令将不会执行并失败:
request('https://localhost:8080/doodles.zip')
.on('error', function(error){
console.log('error requesting base zip file ');
console.log(error);
})
.on('data', function(chunk){
console.log('A new chunk: ', chunk);
})
.on('end', function(){
// console.log(output);
console.log('End GET Request');
})
.pipe(fs.createWriteStream('doodles.txt'))
.on('error',function(error){
console.log('error streaming base zip file');
console.log(error);
})
.on('close',function(){
console.log('on close of zip pipe to txt');
});
答案
来自文档:https://github.com/nodejs/node-v0.x-archive/blob/ba048e72b02e17f0c73e0dcb7d37e76a03327c5a/lib/_http_client.js#L164我希望这就是你的意思。祝好运
function createHangUpError() {
var error = new Error('socket hang up');
error.code = 'ECONNRESET';
return error;
}
以上是关于模拟NodeJS中发出的“Socket挂断”的主要内容,如果未能解决你的问题,请参考以下文章
角度万能 | firebase 管理员 | code: 'app/invalid-credential' |socket 挂断
Android 逆向修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )(代码片