リアルタイム更新により、サーバーから拡張機能のインストールに直接通信できます。イベントが発生したときにデータを送受信できます。インスタント メッセージング、バックグラウンド タスクのトリガー、デバイスデータの同期など、さまざまな最新サービスで重要なオペレーションです。Chrome 拡張機能でリアルタイム通信を行うには、いくつかのオプションがあります。
- Web Push(Push API)は、Chrome 拡張機能で任意の Push プロバイダから、または独自のウェブサーバーを使用してメッセージを 送受信できるウェブ標準です。
- chrome.gcm は、Firebase Cloud Messaging を使用してメッセージを送受信できる 拡張機能固有のレガシー API です。
- WebSockets は、Chrome 拡張機能とサーバー間の 双方向接続を開くことができる低レベルのプロトコルです。
一般的な使用方法
Chrome 拡張機能でリアルタイム通信が重要な一般的なシナリオをいくつか紹介します。
変更内容をユーザーに最新情報として提供する。
複数のユーザー間でファイル、設定、その他の情報を同期している場合、Web Push は拡張機能にサイレント更新を送信して、サーバーから状態を更新するように通知するのに最適な方法です。
ユーザーがバグや問題を報告できるようにしていますか?Push プロバイダと統合して、拡張機能内で直接、共有する更新プログラムがあることをユーザーに通知できます。
ユーザーに通知を送信する。
通知を完全にクライアント側で送信することもできますが、通知を送信するユーザー、内容、場所、タイミングに関するサーバーサイド ロジックが ある場合は、 Web Push が最も将来性のあるオプションです。
一部のユーザーにのみメッセージを送信する場合は、Push が最適です。
Firebase Cloud Messaging には トピック(チャネルとも呼ばれます
)がありますが、HTTP Cloud Messaging API でのみ使用できます。これは、chrome.gcm が使用するレガシー バージョンとは異なります。Chrome のレガシー バージョン(Chrome 121 より前)を使用しているユーザーを含め、すべてのユーザーに幅広いメッセージを送信する場合は、chrome.gcm が最適なオプションです。レガシー Firebase Messaging API を基盤とする chrome.gcm は、10 年以上にわたり Chrome でサポートされています。
Web Push または chrome.gcm を使用して、新しいメッセージが届いたときやファイルが共有されたときなど、アカウントにとって重要なことが発生したときにユーザーに通知を送信できます。
インスタント メッセージ
頻繁な双方向通信が必要ですか?その場合は、ウェブソケットが最適なオプションです。拡張機能とサーバー(または他のユーザーに直接)の間に双方向接続を開きます。リアルタイムでデータやメッセージを交換できます。一般的にウェブでは優れたオプションですが、拡張機能には いくつかの制限があります。使用する場合は 注意してください。
このガイドの残りの部分では、利用可能なオプションについて詳しく説明します。
Push API を使用したプッシュ通知
Push API を使用すると、任意の Push プロバイダを使用してプッシュ通知とメッセージを送信できます。Push API からのプッシュは、受信するとすぐに Service Worker によって処理されます。拡張機能が一時停止している場合、Push によって再開されます。拡張機能で使用するプロセスは オープンウェブで使用する場合とまったく同じです。
chrome.gcm を使用したプッシュ通知
chrome.gcm API は、ウェブ アプリケーションとモバイルアプリにリアルタイム更新を送信するサービスである Firebase Cloud Messaging(FCM)に直接接続します。これは、ブラウザで Push が利用可能になる何年も 前に追加された、Chrome 固有の拡張機能 API です。Firebase の (現在は非推奨の)レガシー HTTP API を使用して構築されました。これらの API は他の場所では非推奨になっていますが、拡張機能では非推奨になっていません。 当面の間は引き続き機能します。ただし、これはレガシー Push バックエンドであるため、トピックなどの機能はありません。
Chrome でユーザーに通知を配信するには FCM バックエンド サービスが必須ですが、メッセージを送信するために chrome.gcm
を使用する必要はありません。
すべての Push プロバイダは、ウェブ Push を使用して Firebase
アカウントにメッセージとイベントを送受信できます。これは引き続き完全にサポートされている
Chrome 拡張機能 API ですが、このような拡張機能固有の API よりも
Push API などのウェブ標準を使用することをおすすめします。ユースケースに
chrome.gcm が最適である場合は、
chrome.gcm を最初から設定する方法の詳細な手順をご覧ください。
WebSockets を使用したリアルタイム メッセージ
WebSockets は、10 年以上にわたり ウェブ上のリアルタイム メッセージングの基盤となっています。継続的な双方向会話を提供し、ウェブ上のリアルタイム イベントのオプションとして使用されてきました。WebSockets は、コンテンツ スクリプト、ポップアップ、サイドパネル、バックグラウンド サービス ワーカーなど、さまざまな拡張機能コンポーネントで動作します。一般的にウェブでは優れたオプションですが、拡張機能にはいくつかの制限があります。使用する場合は注意してください。
プッシュ通知には適していない
WebSockets は chrome.gcm などの拡張機能プラットフォーム API ではなくウェブ プラットフォームで実行されるため、拡張機能の外部で Websocket 接続が開始されたときに Chrome が拡張機能を復帰させる方法はありません。
アクティブな接続のみ
Chrome は、30 秒間使用されていない拡張機能を一時停止します。拡張機能が「使用中」かどうかを判断する際に Chrome が使用するヒューリスティックがいくつかあり、その 1 つがアクティブな WebSocket 接続です。Chrome は、過去 30 秒以内に WebSocket メッセージを送受信した拡張機能を一時停止しません。拡張機能で WebSockets を使用している場合、早期に閉じられないようにするには、ハートビート メッセージを送信して接続を維持します。これには、サーバーに定期的にメッセージを送信して、サーバーと Chrome の両方にアクティブであることを通知します。WebSocket を無期限に維持する方法の例については、 WebSocket のドキュメントをご覧ください。