diff --git a/pages/scripts/sharedworker.js b/pages/scripts/sharedworker.js new file mode 100644 index 0000000..7c4c4c7 --- /dev/null +++ b/pages/scripts/sharedworker.js @@ -0,0 +1,36 @@ +const mutations = { + ADD: 'ADD', + SET: 'SET' +}; + +let browserInstances = []; +let messages = []; + +onconnect = function(e) { + const port = e.ports[0]; + + browserInstances.push(port); + + port.onmessage = function({ data }) { + switch(data.mutation) { + case mutations.ADD: + messages = [...messages, data.value]; + break; + case mutations.SET: + messages = data.value; + break; + } + + postMessage({ ...data, messages }); + } +} + +function postMessage(message) { + if (!Array.isArray(message.value)) { + message.value = [message.value]; + } + + browserInstances.map(instance => { + instance.postMessage(message); + }); +} diff --git a/pages/sharedworker/index.html b/pages/sharedworker/index.html index 7b3c4b7..861972a 100644 --- a/pages/sharedworker/index.html +++ b/pages/sharedworker/index.html @@ -32,8 +32,6 @@