Javascript 如何知道web应用程序和可执行应用程序是否同时处于活动状态

Javascript 如何知道web应用程序和可执行应用程序是否同时处于活动状态,javascript,electron,executable,Javascript,Electron,Executable,我有一个类似slack的web应用程序,用于聊天,当用户离线时,我们会发送“您有新消息”的通知。该通知是html5推送通知,因此在用户尚未打开web应用程序时,该通知有效 我最近为整天聊天的人创建了一个可执行的应用程序。但问题是,当一条新消息出现时:来自exe应用程序和浏览器的通知同时出现 所以我的问题是:我们能否找到web应用程序和exe应用程序是否都在一台设备中处于活动状态?这样我们就可以取消其中一个通知。pc是否有类似于公共id的东西,我们可以从浏览器中的javascript和可执行文件中

我有一个类似slack的web应用程序,用于聊天,当用户离线时,我们会发送“您有新消息”的通知。该通知是html5推送通知,因此在用户尚未打开web应用程序时,该通知有效

我最近为整天聊天的人创建了一个可执行的应用程序。但问题是,当一条新消息出现时:来自exe应用程序和浏览器的通知同时出现

所以我的问题是:我们能否找到web应用程序和exe应用程序是否都在一台设备中处于活动状态?这样我们就可以取消其中一个通知。pc是否有类似于公共id的东西,我们可以从浏览器中的javascript和可执行文件中访问它

注意:-我在服务器中存储了web应用处于活动状态且exe处于活动状态的信息,我只需要查找它们是否来自同一设备


提前谢谢。请告诉我你的解决方案

经过多次尝试和尝试,我找到了一个解决方案

我在exe应用程序中嵌入了一个http服务器,让我可以与web应用程序进行通信。在web应用程序中,我添加了一个web worker,它将每隔10秒ping一次exe应用程序服务器。若收到的响应意味着exe应用程序处于活动状态,那个么我将通过调用api关闭服务器上的通知。这还将确保退出exe应用程序时,web worker不会收到任何响应,这意味着exe未处于活动状态,因此它会激活通知

现在另一个问题是,在安装应用程序后,用户没有打开web应用程序,他仍然收到两个通知。为了克服这个问题,我在exe应用程序第一次启动时打开web应用程序url,它检测到状态并关闭浏览器通知。在相同的过程中-我还将browserId(用于标识浏览器的唯一guid)保存到exe应用程序,每当exe应用程序启动时,我调用api关闭这些browserId的通知


希望这对别人有帮助

你可以用它来做这件事。另一种方法是检测用户是否在服务器的应用程序和web中都有日志记录。缺点是如果它不在同一台机器上..是的,试图找到同一台机器是这里的主要问题。而且我不想由用户安装任何扩展。用户不会喜欢应用程序使用的复杂性。我知道的唯一方法是通过扩展,而且有一个很好的理由——你不想允许网站访问你的应用程序。。