Я пытаюсь использовать общий рабочий для ведения списка всех окон/вкладок веб-приложения. Поэтому используется следующий код:
//lives in shared-worker.js
var connections=[];//this represents the list of all windows/tabs
onconnect=function(e){
connections.push(e.ports[0]);
};
Каждый раз, когда создается окно, соединение устанавливается с рабочим работником shared-worker.js
, и рабочий добавляет соединение с окном в список connections
.
Когда пользователь закрывает окно, его соединение с общим рабочим истекает и должно быть удалено из переменной connections
. Но я не нахожу надежного способа сделать это.
Глядя на спецификацию, объекты переменной connections
, похоже, не содержат свойство/функцию, чтобы проверить, жив ли соединение.
Возможно ли это?
Опять же, общая цель состоит в том, чтобы иметь список всех окон/вкладок.
РЕДАКТИРОВАТЬ:. Подход будет состоять в том, чтобы сделать совместное сообщение с рабочим пользователем и ожидать ответа. Если общий пользователь не получает ответа, он предполагает, что окно закрыто. В моих экспериментах этот подход не доказал свою надежность; проблема заключается в том, что невозможно определить, закрыто ли окно или просто требуется много времени для ответа.