我正在尝试通过邮寄请求将.zip文件(〜180KB)作为八位字节流上传。以下代码按预期执行2-3次。文件被上传,并且得到了预期的响应。
但是,当第3/4次发布数据时,请求在几分钟左右的时间内都不会显示在上传服务器上。等待一会儿后,我可以正常执行另外2-3个请求,然后再次延迟。
两台服务器都在本地主机(OS X)上运行节点(v0.10.31)+ express。
var options = {
host : interface.host,
port : interface.port,
path : interface.path + '/deployResources',
method : 'POST',
headers : {
'Content-Type': 'application/octet-stream',
'Content-Length': byteLength,
'Content-disposition': 'attachment; filename=resources.zip'
}
};
var stream = fs.createReadStream(zipPath);
var req = http.request(options, function (res) {
// Response delayed on 3rd/4th run
console.log(res.statusCode);
});
stream.on('data', function (data) {
req.write(data);
});
stream.on('end', function () {
console.log('STREAM END');
stream.close();
req.end();
});
从节点v0.10.32更新日志:
http:在TE HEAD响应中不发送0 \ r \ n \ r \ n(Fedor Indutny)
这可能是个问题吗?
谢谢。
有时使用Http.Agent
会导致类似这样的问题。遇到这种情况时,可以agent: false
在请求选项中进行设置,以使请求始终获得全新的网络连接。
如果您在短时间内发出许多请求,那么执行此操作并非总是可取的,因为这可能会导致您耗尽可用的文件描述符(这是Http.Agent
为防止发生这种情况而设计的)。在这种情况下,您可以尝试仅增加agent.maxSockets
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句