簡體   English   中英

在 NodeJS 中模擬發出的“套接字掛斷”

[英]Simulate emitted "Socket hang up" in NodeJS

我想通過實現一個簡單的錯誤服務器請求/響應場景來模擬發出的“套接字掛斷錯誤”。

這是一個使用原生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');
}

關於如何模擬發出此錯誤的任何建議,以便我可以在下面的請求模塊模式中處理它? 最終的測試是運行下面的代碼塊,並通過捕獲發出的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM