我在启动 Node.js Unix 套接字时遇到问题。 Node.js 代码生成一个充当服务器的 C 应用程序。当我开始尝试从 Node.js 代码连接到服务器时,服务器可能尚未准备好,因此我收到错误。我什至天真地尝试去捕获它,但它不起作用。这是代码的简化版本:
var net = require('net');
const URI_SOCK = '/opt/tmp/.socket';
try {
const socket = net.connect(URI_SOCK, function() {
//'connect' listener
console.log('Connected to socket!');
socket.write("42");
});
} catch(err) {
console.log("Caught you!");
}
以下是我尝试运行它时发生的情况:
✘ ⚡ ⚙ root@ncooprider-tron ~ node test.js
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED
at errnoException (net.js:901:11)
at Object.afterConnect [as oncomplete] (net.js:892:19)
关于如何捕获该错误或如何强制程序等待,直到服务器准备好接收客户端,有什么想法吗?
最佳答案
这个问题之前已经回答过几次了,但是你基本上需要监听客户端发出的“错误”事件。像这样的东西:
socket.on('error', function(err) {
console.log("Error: " + err);
});
关于node.js - 当服务器尚不可用时如何创建 Node.js Unix 套接字客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43795039/