「擴充功能」的即時更新

即時更新可提供從伺服器直接通往擴充功能安裝的即時通訊路徑。您可以在事件發生時傳送及接收資料。無論是用於即時訊息、觸發背景工作,還是同步處理裝置資料,這都是含有多項現代化服務的重要作業。您可以透過多個方式在 Chrome 擴充功能中進行即時通訊。

  • 網路推送 (又稱 Push API) 是一種網路標準,可讓您透過任何推送供應商,甚至是自己的網路伺服器,透過 Chrome 擴充功能收發訊息。
  • chrome.gcm 是舊版擴充功能專用的 API,可透過 Firebase 雲端通訊收發訊息。
  • WebSockets 是低階通訊協定,可讓您在 Chrome 擴充功能和伺服器之間開啟雙向連線。

常見情況

以下是 Chrome 擴充功能中,支援即時通訊的常見情況:

透過變更讓使用者掌握最新資訊。

如果您要同步處理多位使用者之間的檔案、設定或其他資訊,網路推送是傳送無聲更新給擴充功能,通知擴充功能從伺服器更新狀態的絕佳方法。

您是否會讓使用者回報錯誤或問題?您可以整合 Push Provider,在有更新時直接在擴充功能中通知對方。

傳送通知給使用者。

雖然您可以完全在用戶端傳送通知,但如果您讓伺服器端邏輯指定對象、內容、位置或時間比網路推播,是具有前瞻性的選項。

如果只要向部分使用者傳送訊息,建議採用「推送」功能。 雖然 Firebase 雲端通訊會提供 Topics (又稱為管道),但只能在其 HTTP Cloud Messaging API 中使用。這與 chrome.gcm 使用的舊版不同。如要向所有使用者 (包括使用舊版 Chrome (Chrome 121 以下版本) 的使用者) 傳送廣泛訊息,chrome.gcm 是最佳選項。以舊版 Firebase 訊息傳遞 API 為基礎,Chrome 已支援 chrome.gcm 多年來已支援這項服務。

您可以使用網路推播或 chrome.gcm,在使用者帳戶發生重要事件 (例如收到新訊息或共用檔案時) 傳送通知給使用者。

即時通訊

需要頻繁的雙向通訊嗎?對您來說,網路通訊端也許是最佳選擇。這會在擴充功能和伺服器之間開啟雙向連線 (甚至直接與其他使用者連線)。可讓您即時交換資料和訊息雖然這種做法通常是絕佳的網路選擇,但如果您打算使用擴充功能,請留意其有關擴充功能的一些限制

本指南其他部分將進一步說明可用的選項。

使用 Push API 的推播通知

您可以使用 Push API,透過任何推送供應商傳送推播通知和訊息。服務工作站接收到來自 Push API 的推送作業後,便會立即進行處理。如果擴充功能遭到停權,推送作業會再次喚醒。在擴充功能中使用這項作業的程序與您在開放網路使用的程序相同。

透過 chrome.gcm 接收推播通知

chrome.gcm API 可讓您直接連線至 Firebase 雲端通訊 (FCM),該服務可傳送即時更新內容至網頁應用程式和行動應用程式。這是 Chrome 專屬的擴充功能 API,多年來就一直在 Push 功能中推出。此應用程式是使用 Firebase (現已淘汰) 的舊版 HTTP API 建構。雖然這些 API 已在其他地方淘汰,但並未在擴充功能中淘汰。它們將繼續在可預見的未來工作。不過,由於這是舊版推送後端,不提供 Topics 等功能。

雖然 FCM 後端服務是向 Chrome 使用者發送通知的必要條件,但您不需要使用 chrome.gcm 即可傳送訊息。所有推送供應商都能運用網站推送功能,將訊息和事件傳送到 Firebase 帳戶,雖然這仍是全面支援的 Chrome Extension API,但最佳做法是優先使用 Push API 等網路標準擴充功能,如果您的用途最適合透過 chrome.gcm 執行,請參閱詳細使用教學,瞭解如何從頭開始設定 chrome.gcm。

透過 WebSocket 進行即時通訊

十多年來,WebSockets 一直是網路即時訊息的基石。並是提供線上即時事件的理想選擇,持續進行雙向對話。WebSocket 支援各種擴充功能元件,例如內容指令碼彈出式視窗側邊面板背景服務工作站。一般而言,這種做法是絕佳的網路選項,但對於擴充功能,使用完畢後請留意。

不適合用於推播通知

WebSocket 是在網路平台中執行,而不是使用 chrome.gcm 這類擴充功能平台 API,因此當 WebSocket 連線在擴充功能之外啟動時,Chrome 就無法喚醒您的擴充功能。

僅限有效連線

Chrome 會暫停未在 30 秒後未使用的擴充功能。Chrome 會參考多種經驗法則來判斷擴充功能是否「正在使用中」,其中一項是有效的 WebSocket 連線。對於過去 30 秒內傳送或接收 WebSocket 訊息的擴充功能,Chrome 不會暫停執行。如果您在擴充功能中使用 WebSocket,且需要確保不會提前關閉,您可以傳送 heartbeat 訊息來保持連線。這包括定期傳送訊息至伺服器,讓伺服器和 Chrome 知道您仍在使用中。如要瞭解如何無限期保留 Websocket 訊息,請參閱 WebSocket 說明文件