Skip to content

Instantly share code, notes, and snippets.

@dotproto
Created September 7, 2021 17:20
Show Gist options
  • Save dotproto/c2928916b31fe973555d9432dc8a5c0c to your computer and use it in GitHub Desktop.
Save dotproto/c2928916b31fe973555d9432dc8a5c0c to your computer and use it in GitHub Desktop.
Test: Spawn a WebWorker inside a service worker. This test was created to verify whether or not standard web workers can be instantiated from within a service worker.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width">
<title>Web Workers basic example</title>
</head>
<body>
<script src="main.js"></script>
</body>
</html>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js');
}
// Adapted from https://mdn.github.io/simple-web-worker/
try {
console.log('Spawning a worker');
const myWorker = new Worker('worker.js');
console.log('Sending data to worker:', [2, 3]);
myWorker.postMessage(data);
myWorker.onmessage = function(e) {
console.log('Message received from worker:', e.data);
}
} catch (e) {
console.error(e);
}
// https://mdn.github.io/simple-web-worker/
onmessage = function(e) {
console.log('Worker: Message received from main script');
const result = e.data[0] * e.data[1];
if (isNaN(result)) {
postMessage('Please write two numbers');
} else {
const workerResult = 'Result: ' + result;
console.log('Worker: Posting message back to main script');
postMessage(workerResult);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment