Search code examples
javascripthtmlweb-worker

Shared worker do share variables


I've been reading some documents about shared worker context. Lots of them point out shared worker do not share variables, which means they can not use each other variables. However, my experiment againsts that.

Parent worker

var port = new SharedWorker('worker.js').port;
port.start();
port.postMessage('Hello');

Worker

var ports = [];
onconnect = function(e){
    var port = e.ports[0];
    port.start();
    ports.push(port);
    console.log('Number of tabs: '+ports.length);
};

ports.length keeps increasing when I open more tabs, which means ports is shared between workers.

Could anybody please explain this?


Solution

  • I believe SharedWorker creates a single worker which is accessed from multiple parents, so its not sharing variables since its a single SharedWorker process sharing parents