node.js - 当服务器尚不可用时如何创建 Node.js Unix 套接字客户端

标签 node.js sockets unix

我在启动 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/

相关文章:

node.js - 如何追踪 Node.js 和 Express 内存泄漏?

javascript - 用 EventEmitter 覆盖 http.request

javascript - 如何创建一个全局函数来访问 express.js 中的数据库

c - 将光标移动到当前行的开头

linux - 在 Unix 系统中查找用户主库的绝对路径

bash - unix shell 脚本,用于将文件按固定增量按顺序移动到目录中

node.js - Mongoose 的分页结果,带有引用文档的过滤器

ruby - 如何在 Ruby 中为 clamd 实现 INSTREAM 协议(protocol)?

Java套接字文件上传到服务器,服务器不获取字节数组的第一个字节

java 套接字问题