gpt4 book ai didi

service-worker - Service Worker 与网页之间的通信

转载 作者:行者123 更新时间:2023-12-03 16:27:29 29 4
gpt4 key购买 nike

我正在开发一个应用程序,其目标是定期(例如每小时)向用户发送通知。
我的想法是使用一个可以在选项卡关闭后运行的服务 worker ,并继续向用户发送这些通知。
网页需要能够与 Service Worker 沟通关于这些通知的具体细节、消息应该是什么、它应该以什么间隔运行等等。

我无法理解网页如何与现有的 Service Worker 进行通信,有没有办法让我在打开网页后确定我是否已经有一个已注册的 Service Worker 正在运行并在它们之间建立通信服务 worker 和网页?

这是我在想的一个模糊的例子:

// Web Application
worker = registerServiceWorker({ scope: '/static/' }).then(registration => {
// Verify that everything went well
});

postMessageToWorker() {
// Find the existing worker and send him a message
// I'm guessing I would receive a callback with the desired response here
}

// Service worker
onmessage('start', () => {
// Start the interval and send the user notifications
}

onmessage('update', () => {
// Receive info about updates and apply them
}

最佳答案

您可以使用 navigator.serviceWorker.getRegistration获取现有注册。

您可以使用 postMessage API 与 Service Worker 通信。 . ServiceWorker Cookbook 上有一个简单的例子.

请注意,当您的页面关闭时,Service Worker 将不会继续运行,它迟早会被杀死。
对于您的用例,似乎是 Web Push API会工作。在 ServiceWorker Cookbook 上有一些这个 API 的例子。 .

关于service-worker - Service Worker 与网页之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607563/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com