Недавно я наткнулся на BroadcastChannel и понял, насколько это круто. Благодаря своей простоте он отлично подходит и делает ServiceWorker излишним во многих сценариях.

Одна интересная вещь, которую мы можем сделать с помощью BroadcastChannel, — это открыть общий кэш Apollo среди всех вкладок и окон одного и того же веб-приложения.

Нам не нужно, чтобы весь Apollo Cache был разделен между вкладками по-настоящему, чтобы быть счастливым, но было бы достаточно только поделиться хранилищем из них.

В приведенном ниже коротком фрагменте я создаю оболочку Apollo Cache, которая берет любой экземпляр Apollo Cache и «использует» его метод записи. Таким образом, мы можем передать все, что будет записано в хранилище кеша, всем остальным кешам Apollo, работающим в других вкладках/окнах, чтобы они также могли записать это в свое хранилище и немедленно отразить эффект.

Чтобы помочь вам осознать масштабы его полезности, подумайте, что даже если на одной из вкладок выполняется cache.writeFragment, остальные вкладки немедленно отразят вновь поступившее изменение.

Вот как просто это реализовать:

Удачного кодирования!