var port; onconnect = function(evt) { evt.source.postMessage({ type: "connected" }); if (!port) { port = evt.source; evt.source.onmessage = function(evtFromPort) { port.postMessage({ type: "status", test: "Port from the main-thread!" == evtFromPort.data, msg: "The message is coming from the main-thread", }); port.postMessage({ type: "status", test: evtFromPort.ports.length == 1, msg: "1 port transferred", }); evtFromPort.ports[0].onmessage = function(evtFromPort2) { port.postMessage({ type: "status", test: evtFromPort2.data.type == "connected", msg: "The original message received", }); port.postMessage({ type: "finish" }); close(); }; }; } };