postmessage-transferables-worker.js (652B)
1 var messageHandler = function(port, e) { 2 var text_decoder = new TextDecoder; 3 port.postMessage({ 4 content: text_decoder.decode(e.data), 5 byteLength: e.data.byteLength 6 }); 7 8 // Send back the array buffer via Client.postMessage. 9 port.postMessage(e.data, [e.data.buffer]); 10 11 port.postMessage({ 12 content: text_decoder.decode(e.data), 13 byteLength: e.data.byteLength 14 }); 15 }; 16 17 self.addEventListener('message', e => { 18 if (e.ports[0]) { 19 // Wait for messages sent via MessagePort. 20 e.ports[0].onmessage = messageHandler.bind(null, e.ports[0]); 21 return; 22 } 23 messageHandler(e.source, e); 24 });