Node.js 是否可以制作一个基于托盘的电子应用程序来处理节点ws服务器?
我正在尝试制作一个websocket服务器,它将从一个漂亮的托盘图标运行,并在上下文菜单中提供一些停止/启动等选项。我正在使用服务器的 如果我从Electron的主进程启动ws-server,它绝对可以正常工作,但如果我从Electron的托盘菜单项的单击回调启动它,服务器的启动回调永远不会启动,据我所知Node.js 是否可以制作一个基于托盘的电子应用程序来处理节点ws服务器?,node.js,websocket,electron,Node.js,Websocket,Electron,我正在尝试制作一个websocket服务器,它将从一个漂亮的托盘图标运行,并在上下文菜单中提供一些停止/启动等选项。我正在使用服务器的 如果我从Electron的主进程启动ws-server,它绝对可以正常工作,但如果我从Electron的托盘菜单项的单击回调启动它,服务器的启动回调永远不会启动,据我所知 tray = new Tray(path.join(__dirname, '/icon.png')); tray.setToolTip("Title"); tray.setContextMen
tray = new Tray(path.join(__dirname, '/icon.png'));
tray.setToolTip("Title");
tray.setContextMenu(Menu.buildFromTemplate([
{ label: "Start Server", click: () => { startServer(); } }
]));
function startServer(){
new ws.Server({ port: 4837 }, () => {
console.log("Server started.");
});
}
好的。我通过在托盘点击处理程序中设置一个标志,并在js文件末尾的一段时间内捕捉该标志来启动服务器,从而解决了这个问题 我的最佳猜测是,这与处理托盘的进程/线程有关 通过进一步的研究,我似乎可以通过调用绑定函数来启动服务器。不知道为什么
tray = new Tray(path.join(__dirname, '/icon.png'));
tray.setToolTip("Title");
tray.setContextMenu(Menu.buildFromTemplate([
{ label: "Start Server", click: startServer.bind(this); }
]));
function startServer(){
new ws.Server({ port: 4837 }, () => {
console.log("Server started.");
});
}
没错,上面写着console.log(“server started”)的那个永远不会触发。或者至少,从来没有出现在终端灯上,你能在那里设置一个断点吗?不幸的是,我无法让vscode的调试正常工作,我建议你先解决这个问题。或者尝试使用electron's来提醒信息。