intermediate
BroadcastChannel
Координируйте same-origin вкладки и окна через message channels для logout, инвалидации кэша и совместной работы.
BroadcastChannel даёт простой same-origin обмен между вкладками, окнами, фреймами и workers. Полезен для logout, инвалидации кэша, синхронизации темы и лёгкой координации. Сообщения не персистентны и не пересекают origins — критичные сценарии требуют серверной истины или хранилища.
const channel = new BroadcastChannel('session');
channel.postMessage({ type: 'logout' });
channel.onmessage = (event) => {
if (event.data.type === 'logout') clearClientState();
};
Закрывайте каналы при уничтожении контекста. Не шлите секреты и крупные payload — слушает любой same-origin script.
На интервью: уведомление между вкладками vs надёжная распределённая синхронизация состояния.
Типовые ошибки: очереди на BroadcastChannel теряются при закрытии контекста; чувствительные данные всё равно на клиенте.
Компромисс: удобство против контроля — выбирайте механизм под вашу связность и бюджет производительности.
Чеклист:
- Только same-origin координация.
- Маленькие версионированные сообщения.
- close при teardown.
- Серверная истина для критичного состояния.