简体   繁体   English

Node js Eventemitter没有触发

[英]Node js Eventemitter not fireing

I have the Problem, that my Eventemitter is not fireing.我有问题,我的 Eventemitter 没有触发。 I already googled the Problem and it seems like my order of the code is wrong.. or at least thats my guess.我已经用谷歌搜索了这个问题,看起来我的代码顺序是错误的..或者至少这是我的猜测。 Anyways, no matter how I put the Order of creating the client.js class, it's not triggering.无论如何,无论我如何放置创建client.js class 的顺序,它都不会触发。

FYI creating a electron app that is communicating with a server over TCP/IP.仅供参考,创建一个通过 TCP/IP 与服务器通信的 electron 应用程序。 When the clients connection status is changing, the "connection"-event should trigger to tell the frontend to change.当客户端连接状态发生变化时,应该触发“连接”事件来告诉前端发生变化。 Other events like "error" are working. “错误”等其他事件正在运行。

I dont know if this is enough code for you, just tell me if you need more.我不知道这对你来说是否足够的代码,如果你需要更多,请告诉我。

client.js客户端.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 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);
});

Even when I call the error event instead of the connection event, the error is displayed in my app:即使我调用错误事件而不是连接事件,错误也会显示在我的应用程序中:

// 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);
  }
}

the Response from the last bit of code (connectEventHandler):最后一段代码的响应(connectEventHandler):

“connectEventHandler”中来自前端的响应

What is going on here?这里发生了什么?

Thanks!谢谢!

The Problem was the ConnectEventHandler, after putting the logic of this function into the constructor of the client, every event is getting triggered properly.问题是ConnectEventHandler,在将这个function的逻辑放入客户端的构造函数之后,每个事件都被正确触发了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM