为什么响应已关闭而未完成?

Or *_*ith 5 node.js

我在函数中的node.js中有以下代码readFile:

      res.setHeader("content-type", 'application/octet-stream');
      res.setHeader("Content-Disposition", 'attachment; filename="' + 'original' + '"' + "; filename*=UTF-8''" + 'original' + "");
      var readStream;
      var exists = fs.existsSync(fullPath);
           if (exists) {
                callback(true);
                readStream = fs.createReadStream(fullPath);
                readStream.pipe(res);
           } else {
                callback(false);
                return;
           }
              res.on('finish', function(){
                        logger.info('response ending');
                        readStream.close();
               })
              res.on('close', function(){
                        logger.info('response close');
                        readStream.close();
              })
              res.on('error', function(error){
                        logger.info(error);
                        readStream.close();
              })
Run Code Online (Sandbox Code Playgroud)

出于某种原因,一些请求是发出close事件,而其他请求finish.据我所知,close当出现问题时会发出.

近距离事件可以在2秒到2分钟之间发射.在极少数情况下,不会发出close任何finish事件,也不会发出任何事件,并且请求被"卡住",等待响应.

一些请求会成功的原因是什么,其他请求不会成功?

编辑

我怎么知道为什么发生近距离事件?它是客户端问题还是我的应用程序中的错误?

小智 1

我认为这来自HTTP协议本身。有一个keep-alive选项。如果使用此连接,则可以将连接重新用于不同的请求。

你关闭禁用它并res.set("Connection", "close");再次测试它。