gpt4 book ai didi

node.js - 为什么在 Node.js 中尝试重新连接 TCP 连接后会收到 ECONNREFUSED 错误?

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:07 25 4
gpt4 key购买 nike

我正在尝试使用以下命令在 Node.js 中打开到另一个程序的 TCP 连接:

connection = net.connect(18003, function() {
});

connection.on('close', function() {
console.log('Connection closed');
});
connection.on('error', function() {
console.log('Connection error');

setTimeout(function () {
connection = net.connect(18003, ipAddress,
function() {
});
}, 10000); //Try to reconnect
});

如果其他程序未运行(因此未监听),则第一次会正确处理连接错误,但如果我在超时后尝试再次连接(失败),则会收到以下错误:

events.js:68
throw arguments[1]; // Unhandled 'error' event

Error: connect ECONNREFUSED

现在有人知道为什么第一次可以正确处理不成功的连接,但第二次却不能正确处理吗?我想在等待其他程序启动时继续尝试连接。

最佳答案

您必须绑定(bind)到 'error' event每次调用 net.connect() 时每次重试返回一个新的 net.Socket有自己的事件绑定(bind):

// ...
setTimeout(function () {
connection = net.connect(18003, ipAddress,
function() {
});

connection.on('error', function () {
console.log('Connection retry error');
});
}, 10000); //Try to reconnect
// ...

要连续重试,请将“设置”包装在可以根据需要调用的函数中:

function setupConnection() {
connection = net.connect(18003, ipAddress, function () {
});

connection.on('close', function() {
console.log('Connection closed');
});

connection.on('error', function() {
console.log('Connection error');

setTimeout(setupConnection, 10000); //Try to reconnect
});
}

setupConnection();

关于node.js - 为什么在 Node.js 中尝试重新连接 TCP 连接后会收到 ECONNREFUSED 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com