我无法处理net.createServer中的错误事件

时间:2019-03-09 20:27:48

标签: node.js

通过net.createServer代理多个代理

这是我所有的代码

var proxies='127.0.0.1:4444,127.0.0.1:4443,127.0.0.1:4442'.split(',');
var net = require('net');
function randgetir(){
    d=proxies[Math.floor(Math.random() * proxies.length)].split(':');
    return [d[0],d[1]];
}
var cre=net.createServer(function(from) {
    var prgs=randgetir();
    var to = net.createConnection({host: prgs[0],
        port: prgs[1]
    }).on('error', function(error) {
    });
    from.pipe(to);
    to.pipe(from);
}).on('error', function(error) {
});
cre.listen("56666");

有时我运行代码时会得到

Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:162:27)
Emitted 'error' event at:
    at errorOrDestroy (internal/streams/destroy.js:98:12)
    at Socket.onerror (_stream_readable.js:720:7)
    at Socket.emit (events.js:197:13)
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
    at processTicksAndRejections (internal/process/next_tick.js:76:17)

错误,我的应用程序崩溃并退出,但是如您所见,我处理了所有错误事件,

我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

问题在于传入的消息流没有附加错误处理程序。您可以附加这样的处理程序:

from.on('error', function(e){ ...}))
.pipe(to);

也许可以查看有关stackoverflow的这篇文章,以获得有关使用流/管道进行错误处理的更多信息:Error handling with node.js streams