Ваша переменная port
относится к одной вкладке. Каждый раз, когда происходит событие «connect», вы подключаете другой порт к другой вкладке. Поэтому, если вы хотите отправить сообщение на все вкладки, вам нужно сохранить все порты, а затем отправить сообщение всем им. Как то так:
const ports = [];
self.addEventListener("connect", function (e) {
ports.push(e.ports[0]);
port.addEventListener("message", function (e) {
for (var i = 0; i < ports.length; i++) {
ports[i].postMessage("Hello " + e.data + " (port #" + i + ")");
}
}, true);
port.start();
}, true);
В качестве альтернативы, Я написал библиотеку , которая позволяет легко отправлять сообщения между общим рабочим и вкладками - либо отправка сообщения непосредственно на одну вкладку, либо трансляция на все подключенные вкладки.