我已经被困在这个“套接字挂断”错误几天了,我希望有人可以帮助我。
我目前设置了两个Node程序:
我的HTTP服务器2的代码如下。
var http = require('http')
, https = require('https')
, server = http.createServer(do).listen(801)
function do(req, res) {
var getReq = htts.get('http://127.0.0.1', function (getRes) {
setTimeout(function () {getRes.pipe(res)},1000)
})
req.on('close', function () {
// setTimeout(function () {getReq.abort()},20)
console.log(++i + ': req closed')
getReq.abort()
})
}
问题是当我向HTTP服务器2发送请求并在将响应发送到浏览器之前关闭请求(我设置了超时以给我时间中止)。如果我不断按住刷新按钮,我会在x次后收到“socket hang up”错误,并且真的不明白如何解决这个问题。如果我在执行getReq.abort()之前设置了一个计时器,那么问题就会发生得不那么频繁,如果我将计时器设置为一个大数字(大于100毫秒),则根本没有问题。
我可以通过在创建请求后立即执行getReq.abort()来一致地复制错误,因此我认为它与套接字分配给请求的时间和发送响应之间的中止有关。
我的代码有什么问题,我该如何防止这种情况发生?
由于