完成请求的req.pause()会暂停下一个请求

我有一个非常简单的file upload的例子

var http = require('http'); http.createServer(function(req, res){ console.log(req.method); if (req.method == 'GET'){ res.writeHead(200); res.write('<html><head></head><body><form method="POST" enctype="multipart/form-data"><input type="file" id="f" name="f"><input type="submit"></body></html>') res.end(); }else if(req.method == 'POST'){ req.pause(); res.writeHead(200); res.end(); }else{ res.writeHead(404).end(); } }).listen('8081'); 

我想要做的就是暂停上传。 虽然对于大文件可以正常工作,但可能在单个部分中与请求一起发送的小文件(<= 100kB)不会暂停(这很好,可以理解),而是暂停下一个对服务器的请求(即当我尝试加载页面,它永远不会到达console.log(req.method)一部分,但是当我再次刷新它恢复正常),这是绝对不好的。

这似乎是一个偶尔会出现的错误,所以当我没有发现任何抱怨的时候,我感到很惊讶。 你有什么想法/可能的解释/解决方法/修复build议? 现在我检查一下文件的大小是否低于一定的阈值,但是看起来不是很安全或者很优雅。

我认为(可能是错误的)req.pause导致底层套接字被暂停。 validation此声明的一种方法是在res.writeHead(200)中添加标题Connection:Close ;紧跟req.pause()之后。

现在,如果每个开始工作正常(下一个请求没有暂停),你可以说底层的套接字已经暂停,并被重用于下一个请求。