Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点js事件发射器未激发_Javascript_Node.js_Sockets_Electron_Event Handling - Fatal编程技术网

Javascript 节点js事件发射器未激发

Javascript 节点js事件发射器未激发,javascript,node.js,sockets,electron,event-handling,Javascript,Node.js,Sockets,Electron,Event Handling,我有个问题,我的Eventemitter没有着火。我已经用谷歌搜索了这个问题,似乎我的代码顺序错了。。至少这是我的猜测。无论如何,不管我如何设置创建client.js类的顺序,它都不会触发 仅供参考,创建通过TCP/IP与服务器通信的electron应用程序。当客户端连接状态发生更改时,应触发“connection”(连接)事件以通知前端进行更改。其他事件如“错误”正在工作 我不知道这是否是足够的代码为您,只要告诉我,如果你需要更多 client.js 类客户端扩展events.EventEmi

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

仅供参考,创建通过TCP/IP与服务器通信的electron应用程序。当客户端连接状态发生更改时,应触发“connection”(连接)事件以通知前端进行更改。其他事件如“错误”正在工作

我不知道这是否是足够的代码为您,只要告诉我,如果你需要更多

client.js

类客户端扩展events.EventEmitter{
构造函数(主机、端口){
//正在设置客户端。。
超级();
this.host=host;
this.port=端口;
//等等。。。
this.client=new net.Socket();
//其他事件列表。。。
this.client.on(“connect”,this.connectEventHandler);
}
connectEventHandler(){
试一试{
this.status=“connected”;//我可以从main检查状态
this.tryreconnection=false;//客户端类的其他逻辑
this.emit(“connection”);//这是事件(不工作)
console.log(“应触发连接状态”);//此console.log正在工作
}捕获(错误){
console.log(错误);
这个.emit(“错误”,error);
}
}
}
main.js

//创建客户端
const client=新客户端(process.env.SERVER、process.env.PORT);
//当应用程序准备就绪时,客户端被告知连接到服务器
app.whenReady().然后(()=>{
createWindow();
应用程序打开(“激活”,功能(){
如果(BrowserWindow.getAllWindows().length==0)createWindow();
});
client.connect();
});
//当我在connectEventHandler中调用它时,错误事件工作正常
client.on(“错误”,(消息)=>{
console.log(“触发错误事件”);
对话框。showMessageBoxSync(主窗口{
标题:“费勒”,
讯息:讯息,,
});
});
//这部分不起作用
client.on(“连接”,()=>{
console.log(“新客户端状态:+client.status”);
main window.webContents.send(“客户端状态”,client.status);
});
即使我调用错误事件而不是连接事件,错误也会显示在我的应用程序中:

//来自client.js的代码
connectEventHandler(){
试一试{
this.status=“connected”;//我可以从main检查状态
this.tryreconnection=false;//客户端类的其他逻辑
//这部分被忽略了
本条为“发射”(“连接”);
//这部分是执行的
发出(“错误”,“这是一个测试错误”);
}捕获(错误){
console.log(错误);
这个.emit(“错误”,error);
}
}
来自最后一位代码(connectEventHandler)的响应:

这是怎么回事


谢谢

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