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

How to know if web app and executable app both are active at same time

我有一个类似于 slack 的网络应用程序,用于聊天,当用户离线时,我们会发送 "you have a new message" 的通知。通知是 html5 推送通知,因此在用户未打开网络应用程序时有效。

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

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

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

提前致谢。请让我知道您的解决方案。

经过多次尝试和尝试不同的解决方案 - 我找到了解决方案。

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

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

希望这对某人有所帮助。