Webworker間のコミュニケーションを実装したいと思います。W3Cのドキュメントを読んだところ、MessageChannelがその方法の1つであることがわかりましたが、MessageChannelを読んでいる間、messagechannelを使用してワーカー間の通信を実装する方法を理解できませんでした。
これはMSDNから入手しました
http://msdn.microsoft.com/en-in/library/ie/hh673525(v=vs.85).aspx
これを行うための適切なドキュメントもありません。
MessageChannelを使用してWebワーカーと通信するにはどうすればよいですか?
これがDATA_CLONE_ERR をスローするデモです
var worker = new Worker("sub1_worker.js");
worker.onmessage = function(e) {
$("#log").append("<br>" + e.data);
}
var channel = new MessageChannel();
worker.postMessage("ping", [channel.port2]);
channel.port1.onmessage = function(event) {
// Message is in event.data
alert("Message is: " + event.data);
}
channel.port1.postMessage('hello');
$("#send1").click(function() {
var msg = $("#msg").val();
if (msg && msg != "start")
worker.postMessage("ping2");
$("#msg").val("");
})
$("#send2").click(function() {
var msg = $("#msg").val();
if (msg && msg != "start")
worker.postMessage("ping3",[channel.port2]);
$("#msg").val("");
})
と労働者
onmessage = getMessage;
function getMessage(e){
if(e.ports[0])
e.ports[0].postMessage("msg from sub worker 1 "+ e.data);
else
postMessage("msg from sub worker 1 "+ e.data);
}