我想实现网络工作者之间的通信。我阅读了 W3C 文档,发现MessageChannel是其中一种方法,但是在阅读 MessageChannel 时,我无法理解如何使用 messagechannel 实现工作人员之间的通信。
我从 MSDN 得到这个
http://msdn.microsoft.com/en-in/library/ie/hh673525(v=vs.85).aspx
这里也没有适当的文档来做到这一点。
我需要知道,如何使用 MessageChannel 与 webworkers 通信?
这是抛出 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);
}