- IndexedDB , , , message.
ibd-keyval , :
importScripts('https://unpkg.com/idb-keyval@2.3.0/idb-keyval.js');
async function notifyOfUpdates(urls) {
const clients = await self.clients.matchAll();
for (const client of clients) {
client.postMessage({
type: 'update',
urls,
});
}
const updatedURLsInIDB = await idb.get('updated-urls') || [];
updatedURLsInIDB.push(...urls);
await idb.set('updated-urls', updatedURLsInIDB);
}
<script src="https://unpkg.com/idb-keyval@2.3.0/idb-keyval.js"></script>
<script>
async listenForUrlUpdates() {
const updatedURLsInIDB = await idb.get('updated-urls');
await idb.delete('updated-urls');
navigator.serviceWorker.addEventListener('message', event => {
if (event.data.type === 'update') {
const updatedUrls = event.data.urls;
}
});
}
</script>