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

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

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

一般的なシナリオ

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

ユーザーに最新の変更を通知します。

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

バグや問題の報告をユーザーが許可していますか?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 は、ウェブ アプリケーションやモバイルアプリにリアルタイムの更新情報を送信するためのサービスです。これは Chrome 固有の拡張機能 API で、Push がブラウザで使用可能になる数年前に追加されました。これは、Firebase のレガシー HTTP API(現在は非推奨)を使用して構築されています。これらの API は他の場所で非推奨になっていますが、拡張機能では非推奨ではありません。当分の間、引き続き取り組んでまいります。ただし、これは以前の push バックエンドであるため、Topics などの機能はありません。

FCM バックエンド サービスは Chrome で通知を受け取るための厳格な要件ですが、メッセージを送信するために 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 では拡張機能を復帰させる方法がありません。

アクティブな接続のみ

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