Worker-messageport.js (1276B)
1 onmessage = function(evt) { 2 if (evt.data == "port") { 3 if (evt.ports) { 4 postMessage("PASS: Received message port"); 5 evt.ports[0].onmessage = pingBack; 6 evt.ports[0].start(); 7 } else { 8 postMessage("FAIL: Did not receive expected MessagePort"); 9 } 10 } else if (evt.data == "noport") { 11 if (!evt.ports || evt.ports.length) { 12 postMessage("FAIL: Received message port or null ports array"); 13 } else { 14 postMessage("PASS: evt.ports = [] as expected"); 15 } 16 } else if (evt.data == "spam") { 17 for (var i = 0 ; i < 1000 ; i++) { 18 evt.ports[0].postMessage(i); 19 } 20 postMessage("spamDone"); 21 } else if (evt.data == "getport") { 22 var channel = new MessageChannel(); 23 postMessage("port", [channel.port1]); 24 channel.port2.onmessage = pingBack; 25 channel.port2.start(); 26 } else { 27 postMessage("Unknown message:" + evt.data); 28 } 29 30 } 31 32 function pingBack(evt) { 33 // Make sure we got the expected data and send a return message over 34 // the port. 35 if (evt.data == "ping") { 36 evt.target.postMessage("pong"); 37 } else { 38 postMessage("FAIL: unknown message: " + evt.data); 39 } 40 }