Node js Eventemitter 不触发

如何解决Node js Eventemitter 不触发

我遇到了一个问题,我的 Eventemitter 没有触发。我已经用谷歌搜索了问题,似乎我的代码顺序是错误的..或者至少这是我的猜测。无论如何,无论我如何放置创建 client.js 类的顺序,它都不会触发。

仅供参考,创建了一个通过 TCP/IP 与服务器通信的电子应用程序。当客户端连接状态发生变化时,“连接”事件应该触发以告诉前端发生变化。 “错误”等其他事件正在起作用。

我不知道这些代码对您来说是否足够,如果您需要更多,请告诉我。

client.js

class Client extends events.EventEmitter {
  constructor(HOST,PORT){
    // setting up the client..
    super();
    this.host = HOST;
    this.port = PORT;
    // and so on...
    this.client = new net.socket();
    // othere eventlisteres...
    this.client.on("connect",this.connectEventHandler);
  }
  connectEventHandler() {
    try {
      this.status = "connected"; // I can check the status from main
      this.tryReconnecting = false; // other logic of the client class
      this.emit("connection"); // this is the event (not working)
      console.log("connection status should be triggered"); // this console.log is working
    } catch (error) {
      console.log(error);
      this.emit("error",error);
    }
  }
}

main.js

// creating the client
const client = new Client(process.env.SERVER,process.env.PORT);

// when the app is ready,client is told to connect to the server
app.whenReady().then(() => {
  createWindow();
  app.on("activate",function () {
    if (browserWindow.getAllWindows().length === 0) createWindow();
  });
  client.connect();
});

// the error event is working perfectly,event when I call it in the connectEventHandler
client.on("error",(message) => {
  console.log("error event triggered");
  dialog.showMessageBoxSync(mainWindow,{
    title: "Fehler",message: message,});
});

// this part is not working
client.on("connection",() => {
  console.log("new client status: " + client.status);
  mainWindow.webContents.send("client-status",client.status);
});

即使我调用错误事件而不是连接事件,错误也会显示在我的应用程序中:

// code from client.js
connectEventHandler() {
  try {
    this.status = "connected"; // I can check the status from main
    this.tryReconnecting = false; // other logic of the client class

    // this part is getting ignored
    this.emit("connection");

    // this part is executed
    this.emit("error","this is a test error");

  } catch (error) {
    console.log(error);
    this.emit("error",error);
  }
}

来自最后一位代码的响应(connectEventHandler):

Response from frontend in "connectEventHandler"

这里发生了什么?

谢谢!

解决方法

问题是ConnectEventHandler,在将这个函数的逻辑放入客户端的构造函数后,每个事件都被正确触发。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?