OLD | NEW |
---|---|
1 self.onmessage = function(e) { | 1 self.onmessage = function(e) { |
2 e.waitUntil(self.clients.matchAll().then(function(clients) { | 2 e.waitUntil(self.clients.matchAll().then(function(clients) { |
3 clients.forEach(function(client) { | 3 clients.forEach(function(client) { |
4 var messageChannel = new MessageChannel(); | 4 var messageChannel = new MessageChannel(); |
5 messageChannel.port1.onmessage = | 5 messageChannel.port1.onmessage = |
6 onMessageViaMessagePort.bind(null, client); | 6 onMessageViaMessagePort.bind(null, messageChannel.port1); |
7 client.postMessage({port: messageChannel.port2}, | 7 client.postMessage({port: messageChannel.port2}, |
8 [messageChannel.port2]); | 8 [messageChannel.port2]); |
9 }); | 9 }); |
10 })); | 10 })); |
11 }; | 11 }; |
12 | 12 |
13 function onMessageViaMessagePort(client, e) { | 13 function onMessageViaMessagePort(port, e) { |
nhiroki
2016/10/18 06:46:03
I changed a communication path from "client" to "p
| |
14 var message = e.data; | 14 var message = e.data; |
15 if ('value' in message) { | 15 if ('value' in message) { |
16 client.postMessage({ack: 'Acking value: ' + message.value}); | 16 port.postMessage({ack: 'Acking value: ' + message.value}); |
17 } else if ('done' in message) { | 17 } else if ('done' in message) { |
18 client.postMessage({done: true}); | 18 port.postMessage({done: true}); |
falken
2016/10/19 01:55:24
Not sure if this works but can it just be e.ports[
nhiroki
2016/10/19 04:00:50
In my understanding, 'ports' array is filled only
falken
2016/10/19 04:06:27
Acknowledged.
| |
19 } | 19 } |
20 } | 20 } |
OLD | NEW |