我使用“net”库在我的nodeJs上创建TCP连接。
root.socket = net.createConnection(root.config.port, root.config.server);
我正在尝试在远程服务器关闭时处理错误并在Cycle中重新连接。
root.socket.on('error', function(error) {
console.log('socket error ' + error);
root.reconnectId = setInterval(function () {
root.socket.destroy();
try {
console.log('trying to reconnect');
root.socket = net.createConnection(root.config.port, root.config.server);
} catch (err) {
console.log('ERROR trying to reconnect', err);
}
}, 200);
}
问题是,在远程服务器关闭的情况下,我仍然遇到错误,我的nodeJS服务器停止了。
events.js:72 扔掉//未处理的'错误'事件 ^错误:连接ECONNREFUSED 在errnoException(net.js:904:11) 在Object.afterConnect [as oncomplete](net.js:895:19)
答案 0 :(得分:2)
你需要这样的东西:
var net = require('net');
var c = createConnection(/* port, server */);
function createConnection(port, server) {
c = net.createConnection(port, server);
console.log('new connection');
c.on('error', function (error) {
console.log('error, trying again');
c = createConnection(port, server);
});
return c;
}
在你的情况下,你正在创建一个新的连接,但你没有附加任何错误监听器,错误会在执行循环中的其他地方引发,并且不会被" try / catch&#34捕获;言。
P.S。尽量避免使用"尝试/捕捉"语句,Node.JS中的错误处理是使用错误侦听器和域进行的,它仅对JSON.parse()
或同步执行的其他函数有用。