I am working on an app in which has child apps. I am trying to use shared workers. One shared worker will be used for websockets and another one for each child app .
Please help me establish a communication between these two shared workers.
I tried to use MessageChannel, but seems like it is used for webworkers.
<script>
var channel = new MessageChannel();
var worker1 = new SharedWorker('worker1.js');
var worker2 = new SharedWorker('worker2.js');
worker1.postMessage({
command: 'connect'
}, [channel.port1]);
worker2.postMessage({
command: 'connect'
}, [channel.port2]);
var sendMessage = function() {
var message = document.getElementById('test').value();
worker1.postMessage({
command: "forward",
message: message
});
}
</script>
Worker1 and 2
var otherWorker
var onMessageArrival = function(event) {
console.log("Received a message: " + event.data);
};
self.onmessage = function(event) {
switch (event.data.command) {
// Setup connection to worker 2
case "connect":
otherWorker = event.ports[0];
otherWorker.onmessage = onMessageArrival;
break;
// Forward messages to worker 2
case "forward":
// Forward messages to worker 2
otherWorker.postMessage(event.data.message);
break;
//handle other messages from main
default:
console.log(event.data);
}
};