adding 02 SharedWorker
This commit is contained in:
36
pages/scripts/sharedworker.js
Normal file
36
pages/scripts/sharedworker.js
Normal file
@ -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);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user