拡張機能のリアルタイム更新

リアルタイム更新により、サーバーから拡張機能のインストールに直接即時の通信パスが提供されます。イベントの発生時にデータを送受信できます。インスタント メッセージ、バックグラウンド タスクのトリガー、デバイスデータの同期など、さまざまな最新サービスで重要なオペレーションです。Chrome 拡張機能にはリアルタイム通信を 行うためのオプションがあります

  • Web Push(Push API)は、任意の Push プロバイダや独自のウェブサーバーとの間で、Chrome 拡張機能でメッセージを送受信できるウェブ標準です。
  • chrome.gcm は以前の拡張機能固有の API で、Firebase Cloud Messaging を使用してメッセージを送受信できます。
  • WebSockets は、Chrome 拡張機能とサーバーの間で双方向接続を確立するための低レベルのプロトコルです。

一般的なシナリオ

リアルタイムのコミュニケーションが重要な Chrome 拡張機能の一般的なシナリオを以下に示します。

ユーザーに最新情報を通知します。

複数のユーザー間でファイルや設定などの情報を同期する場合、ウェブプッシュは、拡張機能にサイレント アップデートを送信して、サーバーから状態を更新するように通知するための最適な方法です。

ユーザーにバグや問題の報告を許可していますか?push プロバイダと統合すると、共有するアップデートが入手できたらすぐに拡張機能で直接通知できます。

ユーザーに通知を送信する。

通知は完全にクライアント側で送信することもできますが、サーバー側で誰が、何を、どこで、いつ通知を送信するかのロジックがある場合は、ウェブプッシュが将来を見据えた選択肢です。

一部のユーザーにのみメッセージを送信する場合は、push が最適です。Firebase Cloud Messaging には Topics(チャネル)が用意されていますが、これは HTTP Cloud Messaging API でのみ使用できます。これは、chrome.gcm が使用する以前のバージョンとは異なります。以前のバージョンの Chrome(Chrome 121 より前)のユーザーを含め、すべてのユーザーに幅広いメッセージを送信する場合は、chrome.gcm が最適です。以前の Firebase メッセージ API を基に構築された chrome.gcm は、10 年以上にわたり Chrome でサポートされてきました。

ウェブプッシュまたは chrome.gcm を使用すると、新しいメッセージの受信やファイルが共有されたときなど、アカウントにとって重要な何かが発生したときにユーザーに通知を送信できます。

インスタント メッセージ

頻繁な双方向のコミュニケーションが必要な場合は、その場合、WebSocket が最適なオプションになることもあります。これにより、拡張機能とサーバー間の双方向接続が確立されます(他のユーザーとの双方向接続も可能になります)。リアルタイムでデータとメッセージを 交換できます一般的にはウェブでは優れたオプションですが、拡張機能に関するいくつかの制限があります。使用を計画する場合は、この点に留意する必要があります。

このガイドの残りの部分では、使用可能なオプションについて詳しく説明します。

Push API を使用したプッシュ通知

Push API を使用すると、任意の Push プロバイダでプッシュ通知とメッセージを送信できます。Push API からの push は、受信されるとすぐに Service Worker によって処理されます。拡張機能が停止されている場合、Push によって再び起動されます。拡張機能で使用するプロセスは、オープンウェブで使用するプロセスとまったく同じです。

chrome.gcm を使用したプッシュ通知

chrome.gcm API を使用すると、Firebase Cloud Messaging(FCM)に直接接続できます。FCM は、ウェブ アプリケーションとモバイルアプリにリアルタイムの更新を送信するためのサービスです。これは、ブラウザで Push が利用可能になる何年も前に追加された Chrome 固有の拡張機能 API です。これは、Firebase の(現在は非推奨になった)レガシー HTTP API を使用して構築されています。これらの API は他の場所で非推奨となっていますが、拡張機能では非推奨にはなりません。当面はこれまでどおり機能します。ただし、これは従来の push バックエンドであるため、Topics などの機能はありません。

Chrome でユーザーにリーチする通知には FCM バックエンド サービスが必須の要件ですが、メッセージを送信するために chrome.gcm を使用する必要はありません。すべての push プロバイダは、ウェブの push を使用して Firebase アカウントとメッセージとイベントを送受信できます。これは引き続き完全にサポートされている Chrome Extension API ですが、このような拡張機能固有の API よりも Push API などのウェブ標準を優先することをおすすめします。chrome.gcm を使用するのが適しているユースケースの場合は、chrome.gcm をゼロから設定する方法についての詳しい手順をご覧ください。

WebSocket を使用したリアルタイム メッセージ

WebSockets は、10 年以上前からウェブ上のリアルタイム メッセージングの基礎であり続けてきました。ウェブのリアルタイム イベントでよく使われるオプションであり、継続的な双方向の会話を提供します。WebSocket は、コンテンツ スクリプトポップアップサイドパネルバックグラウンド Service Worker など、さまざまな拡張コンポーネントで機能します。一般的にはウェブでの優れたオプションですが、拡張機能を使用する予定の場合はいくつかの制限事項に留意する必要があります。

プッシュ通知には不向き

WebSocket は、chrome.gcm などの拡張プラットフォーム API を使用するのではなく、ウェブ プラットフォームで実行されます。拡張機能の外部で WebSocket 接続が開始されたときに、Chrome では拡張機能を起動することはできません。

アクティブな接続のみ

使用されていない拡張機能を 30 秒後に一時停止します。Chrome では、さまざまなヒューリスティックが、拡張機能が「使用中」かどうかを判断します。その中の 1 つがアクティブな WebSocket 接続です。Chrome では、過去 30 秒以内に WebSocket メッセージを送受信した拡張機能は一時停止されません。拡張機能で WebSocket を使用していて、早期に閉じないようにする必要がある場合は、ハートビート メッセージを送信して接続を維持できます。これには、サーバーに定期的にメッセージを送信し、サーバーと Chrome の両方にユーザーが引き続きアクティブであることを知らせます。WebSocket を無期限に維持する方法の例については、WebSocket のドキュメントをご覧ください。