postMessage-client-worker.js (716B)
1 async function doTest(e) 2 { 3 if (e.resultingClientId) { 4 const promise = new Promise(async resolve => { 5 let counter = 0; 6 const client = await self.clients.get(e.resultingClientId); 7 if (client) 8 client.postMessage(counter++); 9 if (e.request.url.includes("repeatMessage")) { 10 setInterval(() => { 11 if (client) 12 client.postMessage(counter++); 13 }, 100); 14 } 15 setTimeout(() => { 16 resolve(fetch(e.request)); 17 }, 1000); 18 }); 19 e.respondWith(promise); 20 } 21 } 22 23 self.addEventListener("fetch", e => e.waitUntil(doTest(e)));