Node.js 重新连接到NodeJS上的TCP/IP套接字

Node.js 重新连接到NodeJS上的TCP/IP套接字,node.js,sockets,Node.js,Sockets,我使用“net”库在我的节点上创建TCP连接 root.socket = net.createConnection(root.config.port, root.config.server); 我试图在远程服务器关闭并重新连接时处理错误 root.socket.on('error', function(error) { console.log('socket error ' + error); root.reconnectId = setInterval(fu

我使用“net”库在我的节点上创建TCP连接

root.socket = net.createConnection(root.config.port, root.config.server);
我试图在远程服务器关闭并重新连接时处理错误

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 投掷者;//未处理的“错误”事件 ^错误:连接错误 在errnoException(net.js:904:11) 在Object.afterConnect[as oncomplete](net.js:895:19)


您将需要以下内容:

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”语句捕获


注意:尽量避免使用“try/catch”语句,Node.JS中的错误处理是使用错误监听器和域进行的,它只能用于
JSON.parse()
或其他同步执行的函数。

和?您的问题是什么?抱歉,在问题完成之前发布此错误即使在添加错误侦听器后也会引发此错误?是。我确实在日志中看到“尝试重新连接”。在那之后,我的服务器因一个错误而关闭。我在日志中没有看到“尝试重新连接时出错”。啊,我理解您的问题,错误没有被捕获,因为它发生在主循环的另一个循环中,并且在“try/catch”语句之外,我将很快为您发布解决方案。