拡張機能のリアルタイム アップデート

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

  • ウェブプッシュ(Push API)は、任意の Push プロバイダや独自のウェブサーバーから Chrome 拡張機能でメッセージを送受信できるウェブ標準です。
  • browser.gcm は、Firebase Cloud Messaging を使用してメッセージを送信および受信できる、レガシー拡張機能固有の API です。
  • WebSockets は、Chrome 拡張機能とサーバー間の双方向接続を開くことができる低レベルのプロトコルです。

一般的な使用方法

Chrome 拡張機能でリアルタイム通信が重要な一般的なシナリオを次に示します。

変更についてユーザーに最新情報を伝えます。

複数のユーザー間でファイル、設定、その他の情報を同期している場合、Web Push は拡張機能にサイレント更新を送信して、サーバーから状態を更新するように通知するのに最適な方法です。

ユーザーがバグや問題を報告できるようにしていますか?プッシュ プロバイダと統合して、拡張機能内で直接、共有する更新情報があることを通知できます。

ユーザーに通知を送信します。

通知は完全にクライアントサイドで送信できますが、通知の送信対象、内容、場所、タイミングに関するサーバーサイドのロジックがある場合は、Web Push が最も将来性のあるオプションです。

ユーザーのサブセットにのみメッセージを送信する場合は、Push が最適です。Firebase Cloud Messaging にはトピック(チャネルとも呼ばれます)がありますが、これは HTTP Cloud Messaging API でのみ使用できます。これは、browser.gcm が使用する以前のバージョンとは異なります。Chrome の以前のバージョン(Chrome 121 より前)のユーザーを含むすべてのユーザーにブロードキャスト メッセージを送信する場合は、browser.gcm が最適なオプションです。以前の Firebase メッセージング API を基盤とする browser.gcm は、10 年以上にわたって Chrome でサポートされてきました。

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

インスタント メッセージ

頻繁な双方向通信が必要ですか?その場合は、ウェブソケットが最適な選択肢となる可能性があります。拡張機能とサーバー(または他のユーザー)間の双方向接続が開きます。これにより、データとメッセージをリアルタイムで交換できます。一般的にウェブでは優れた選択肢ですが、拡張機能にはいくつかの制限があります。使用を検討している場合は、この点に注意する必要があります。

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

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

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

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

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

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

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

WebSockets は、10 年以上にわたりウェブ上のリアルタイム メッセージングの基盤となってきました。継続的な双方向会話を実現する、ウェブ上のリアルタイム イベントの定番オプションです。WebSocket は、コンテンツ スクリプトポップアップサイドパネルバックグラウンド サービス ワーカーなど、さまざまな拡張機能コンポーネントで動作します。一般的にウェブでは優れたオプションですが、拡張機能にはいくつかの制限があるため、使用を検討している場合は注意が必要です。

プッシュ通知にはあまり適していない

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

アクティブな接続のみ

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