我在函数中的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");再次测试它。
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |