[英]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):
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.