worker_postMessages.js (1554B)
1 function test_workers() { 2 onmessage = function (e) { 3 postMessage(e.data, e.ports); 4 }; 5 6 onmessageerror = function (e) { 7 postMessage("error"); 8 }; 9 } 10 11 function test_sharedWorkers(port) { 12 port.onmessage = function (e) { 13 if (e.data == "terminate") { 14 close(); 15 } else { 16 port.postMessage(e.data, e.ports); 17 } 18 }; 19 20 port.onmessageerror = function (e) { 21 port.postMessage("error"); 22 }; 23 } 24 25 function test_broadcastChannel(obj) { 26 var bc = new BroadcastChannel("postMessagesTest_inWorkers"); 27 bc.onmessage = function (e) { 28 obj.postMessage(e.data); 29 }; 30 31 bc.onmessageerror = function () { 32 obj.postMessage("error"); 33 }; 34 } 35 36 function test_messagePort(port) { 37 port.onmessage = function (e) { 38 postMessage(e.data, e.ports); 39 }; 40 41 port.onmessageerror = function (e) { 42 postMessage("error"); 43 }; 44 } 45 46 onconnect = function (e) { 47 e.ports[0].onmessage = ee => { 48 if (ee.data == "sharedworkers") { 49 test_sharedWorkers(e.ports[0]); 50 e.ports[0].postMessage("ok"); 51 } else if (ee.data == "broadcastChannel") { 52 test_broadcastChannel(e.ports[0]); 53 e.ports[0].postMessage("ok"); 54 } else if (ee.data == "terminate") { 55 close(); 56 } 57 }; 58 }; 59 60 onmessage = function (e) { 61 if (e.data == "workers") { 62 test_workers(); 63 postMessage("ok"); 64 } else if (e.data == "broadcastChannel") { 65 test_broadcastChannel(self); 66 postMessage("ok"); 67 } else if (e.data == "messagePort") { 68 test_messagePort(e.ports[0]); 69 postMessage("ok"); 70 } else { 71 postMessage("ko"); 72 } 73 };