Только недавно обсуждали варианты реализации, Ваш хорош лаконичностью и альтернативными механизмами (передача данных через кукизы и использованием событий закрытия вкладок/окон), но есть и минусы: если вкладки виснут, или залипают на время (что не редкость) то мастеров станет несколько, поэтому без heartbeat для каждой вкладки не обойтись. Надеюсь, кто-то слепит все вместе, уже почти-почти.
Это не поменяет смысла. Идея в том, что когда открыто 10 вкладок одного сайта — можно обрабатывать логику только в одном из потоков. Можно сделать этот поток на веб воркере, но это не принципиально и зависит только от того как реализован конкретный проект.
Для этого есть SharedWebWorkers и тогда решения с localStorage уходят в прошлое — не нужно никаких костылей. Но поддержка их браузерами к сожалению пока не радует: caniuse.com/#feat=sharedworkers
Я открыл gmail, нажал Ctrl+T, в открывшейся новой вкладке руками вписал plus.google.com, потом переключился обратно на первую страницу и перелогинился. Plus в этот момент должен меня тоже перелогинить.
«Plus в этот момент должен меня тоже перелогинить.» это еще зачем? В смысле спорный вопрос.
Я например хотел бы видеть две tabs с моими gmail ящиками.
А вообще это вопрос взаимодействия двух приложений. Решаемо банальным повешением observers на localStorage.
Если они часть одной suite то должны отдаваться с одного URL.
Ну да ладно, вопрос то был в другом: зачем для тяжелой логики отдельное окно?
Для тяжелой логики gmail — одно окно, для тяжелой логики plus — второе. А пользователь один. Он один и в Гугле, и в Яндексе; иначе все запросы, которые должны пройти через passport офигеют. Или мы окажемся недалеко от отсылки пароля плейнтекстом.
Подгружать логику плюса (и всего остального) в почту — не вариант, вы же понимаете.
Я не очень понял, откуда в посте вдруг всплыла «тяжёлая логика», но изначально там было вполне разумное условие: есть соединение по вебсокету, есть туча вкладок сайта — вполне естественно не открывать по соединению на каждую вкладку, а держать только одно соединение, в какой-то одной вкладке, а с остальными общаться внутри браузера.
То что вы описали было у меня по умолчанию (в проекте dueljs). Я предложил философию (о которой ведется речь в статье) в качестве эксперимента. Я сам лично тоже придерживаюсь вашей точки зрения.
Решение задачи сброса тяжелой логики на одну из множества открытых вкладок