Source code

Revision control

Copy as Markdown

Other Tools

self.onmessage = function(e) {
e.waitUntil(self.clients.matchAll().then(function(clients) {
clients.forEach(function(client) {
var messageChannel = new MessageChannel();
messageChannel.port1.onmessage =
onMessageViaMessagePort.bind(null, messageChannel.port1);
client.postMessage(undefined, [messageChannel.port2]);
});
}));
};
function onMessageViaMessagePort(port, e) {
var message = e.data;
if ('value' in message) {
port.postMessage({ack: 'Acking value: ' + message.value});
} else if ('done' in message) {
port.postMessage({done: true});
}
}