Tôi muốn thực hiện liên lạc giữa các nhà cung cấp web. Tôi đọc tài liệu W3C và tôi thấy MessageChannel là một trong những cách để làm điều đó, nhưng trong khi đọc MessageChannel tôi không thể hiểu làm thế nào để thực hiện thông tin liên lạc giữa các công nhân sử dụng messagechannel.Nhân viên Web liên lạc bằng cách sử dụng MessageChannel HTML5
Tôi nhận này từ MSDN
http://msdn.microsoft.com/en-in/library/ie/hh673525(v=vs.85).aspx
Đây cũng là không có tài liệu thích hợp để làm điều đó.
Tôi cần biết, làm thế nào tôi có thể liên lạc với các nhà cung cấp web bằng MessageChannel?
Đây là Demo ném 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("");
})
và công nhân
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);
}
Cảm ơn bạn đã giải thích rõ ràng. làm thế nào tôi có thể gửi tin nhắn đến cổng nhận được và nhận được tin nhắn trong mainjs –
Không chắc chắn tôi hiểu câu hỏi của bạn, mã của bạn đã làm điều đó. Trong công nhân, bạn sử dụng 'receivedPort.postMessage()' để gửi các thông điệp tới luồng chính. Trong các thông điệp chủ đề chính sẽ được nhận bởi hàm bạn đã gán cho 'channel.port1.onmessage'. –