我已经被这个“套接字挂断”错误困扰了几天,我希望有人可以帮助我。
我目前设置了两个 Node 程序:
- Node 中的 HTTP 服务器对每个节点都使用相同的数据进行响应
要求。
- HTTP 服务器响应来自 HTTP 服务器 1 的数据。
对于每个请求。
我的 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 服务器发送请求并在将响应发送到浏览器之前关闭请求时(我设置了超时以便有时间中止)。如果我持续按住刷新按钮,我将在 x 次后收到“套接字挂起”错误,并且并不真正了解如何解决此问题。如果我在执行 getReq.abort() 之前设置一个计时器,则问题发生的频率会降低,如果我将计时器设置为很大的数字(超过 100 毫秒),则根本不会出现问题。
我可以通过在创建请求后立即执行 getReq.abort() 来一致地复制错误,因此我相信它与将套接字分配给请求的时间和发送响应之前之间的中止有关。
我的代码有什么问题,如何防止这种情况发生?
Thanks
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)