如何解决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):
这里发生了什么?
谢谢!
解决方法
问题是ConnectEventHandler,在将这个函数的逻辑放入客户端的构造函数后,每个事件都被正确触发。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。