communication between sharedworkers

172 Views Asked by At

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);
    }
};
0

There are 0 best solutions below