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

Обновления в реальном времени обеспечивают мгновенный путь связи с ваших серверов непосредственно к установленным вами расширениям. Вы можете отправлять и получать данные по мере возникновения событий. Независимо от того, используете ли вы его для обмена мгновенными сообщениями, запуска фоновых задач или синхронизации данных устройства, это важная операция для ряда современных сервисов. Существует несколько вариантов общения в режиме реального времени в расширениях 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 Cloud Messaging API. Это отличается от устаревшей версии, которую использует 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, таким специфическим расширениям, как этот. Если в вашем случае лучше всего использовать chrome.gcm, есть подробное руководство по настройке chrome.gcm с нуля.

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

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

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

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

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

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