Обновления в реальном времени в расширениях

Обновления в реальном времени обеспечивают мгновенный канал связи между вашими серверами и установленными расширениями. Вы можете отправлять и получать данные по мере возникновения событий. Независимо от того, используете ли вы это для обмена мгновенными сообщениями, запуска фоновых задач или синхронизации данных с устройств, это критически важная операция для ряда современных сервисов. Существует множество вариантов для обеспечения связи в реальном времени в расширениях Chrome.

  • Web Push , или Push API, — это веб-стандарт, позволяющий отправлять и получать сообщения в расширении Chrome от любого поставщика Push-уведомлений или даже от вашего собственного веб-сервера.
  • chrome.gcm — это устаревший API, предназначенный для расширений, позволяющий отправлять и получать сообщения с помощью Firebase Cloud Messaging.
  • WebSockets — это низкоуровневый протокол, позволяющий устанавливать двустороннее соединение между расширением Chrome и вашим сервером.

Типичные сценарии

Вот несколько распространенных сценариев использования расширений Chrome, где связь в режиме реального времени имеет решающее значение:

Постоянно информируйте пользователей об изменениях.

Если вы синхронизируете файлы, настройки или другую информацию между несколькими пользователями, то Web Push — это идеальный способ отправлять в ваше расширение незаметные обновления, чтобы оно знало о необходимости обновить состояние на сервере.

Предоставляете ли вы пользователям возможность сообщать об ошибках или проблемах? Вы можете интегрироваться с поставщиком push-уведомлений, чтобы сообщать им о появлении обновлений прямо в вашем расширении.

Отправлять уведомления пользователям.

Хотя вы можете отправлять уведомления полностью на стороне клиента , если у вас есть серверная логика, определяющая, кому, чему, куда и когда отправлять уведомление, то Web Push — это наиболее перспективный вариант.

Для отправки сообщений только ограниченному кругу пользователей лучшим выбором будет Push-уведомления. Хотя Firebase Cloud Messaging предлагает темы (также известные как каналы), они доступны только в их HTTP-API Cloud Messaging. Это отличается от устаревшей версии, используемой chrome.gcm . Если вы хотите отправлять сообщения всем пользователям, включая тех, кто использует устаревшие версии Chrome (до Chrome 121), то chrome.gcm — идеальный вариант. Созданный на основе устаревших API Firebase для обмена сообщениями, chrome.gcm поддерживается в Chrome уже более десяти лет.

Для отправки уведомлений пользователям о важных событиях в их учетной записи, таких как получение нового сообщения или отправка файла, можно использовать Web Push или chrome.gcm

Мгновенные сообщения

Нужна частая двусторонняя связь? Тогда веб-сокеты могут стать для вас лучшим вариантом. Они открывают двустороннее соединение между вашим расширением и вашим сервером (или даже напрямую с другими пользователями). Это позволяет обмениваться данными и сообщениями в режиме реального времени. Хотя в целом веб-сокеты — отличный вариант, у них есть некоторые ограничения при использовании с расширениями , которые необходимо учитывать, если вы планируете их использовать.

В оставшейся части этого руководства мы более подробно рассмотрим доступные варианты.

Push-уведомления с помощью Push API

Используя Push API, вы можете использовать любой поставщик Push-уведомлений для отправки push-уведомлений и сообщений. Push-уведомление от Push API будет обработано вашим сервис-воркером сразу после его получения. Если расширение было приостановлено, Push-уведомление разбудит его. Процесс использования в расширениях точно такой же, как и в открытом веб-пространстве.

Push-уведомления с помощью chrome.gcm

API chrome.gcm обеспечивает прямое подключение к Firebase Cloud Messaging (FCM), сервису для отправки обновлений в реальном времени веб-приложениям и мобильным приложениям. Это API расширения, разработанного специально для Chrome, который был добавлен за много лет до появления функции Push в браузерах. Он был создан с использованием устаревших HTTP API Firebase (теперь уже устаревших). Хотя эти API устарели в других местах, в расширениях они не устарели. Они будут продолжать работать в обозримом будущем. Однако, поскольку это устаревший бэкенд для Push-уведомлений, ему не хватает таких функций, как Topics .

Хотя наличие бэкэнд-сервиса FCM является обязательным условием для отправки уведомлений пользователям Chrome, вам не обязательно использовать chrome.gcm для отправки сообщений. Все поставщики Push-уведомлений могут отправлять и получать сообщения и события в учетную запись Firebase с помощью веб-Push. Хотя это по-прежнему полностью поддерживаемый API расширений Chrome, рекомендуется отдавать предпочтение веб-стандартам, таким как Push API , а не специализированным API расширений. Если для вашего случая лучше всего подходит chrome.gcm, существует подробная инструкция по настройке chrome.gcm с нуля.

Сообщения в реальном времени с использованием WebSocket

WebSocket уже более десяти лет являются краеугольным камнем обмена сообщениями в реальном времени в интернете. Они стали предпочтительным вариантом для обработки событий в реальном времени в интернете, обеспечивая непрерывный двусторонний диалог. WebSocket работают в различных компонентах расширений , будь то скрипты контента , всплывающие окна , боковые панели или фоновые сервисы . Хотя в целом это отличный вариант для веб-разработки, у них есть некоторые ограничения при использовании с расширениями, которые необходимо учитывать, если вы планируете их использовать.

Не очень подходит для push-уведомлений.

Поскольку WebSocket работает на веб-платформе, а не использует API платформы расширений, например chrome.gcm , у Chrome нет возможности активировать ваше расширение при установлении WebSocket-соединения вне вашего расширения.

Только активные соединения

Chrome приостанавливает работу расширений, которые не используются, через 30 секунд. Chrome использует ряд эвристических алгоритмов для определения того, используется ли расширение, одним из которых является активное соединение WebSocket. Chrome не будет приостанавливать работу расширения, которое отправляло или получало сообщения WebSocket в течение последних 30 секунд. Если вы используете WebSocket в своем расширении и вам необходимо убедиться, что оно не будет преждевременно закрыто, вы можете отправлять сообщения Heartbeat для поддержания соединения. Это включает в себя периодическую отправку сообщений на сервер, сообщая ему и Chrome, что соединение все еще активно. Пример того, как поддерживать соединение WebSocket в течение неопределенного времени, доступен в нашей документации по WebSocket .