即時更新提供即時通訊路徑,可直接從伺服器傳送至已安裝的擴充功能。您可以在事件發生時傳送及接收資料。無論是運用它來執行即時通訊、觸發背景工作,或是同步處理裝置資料,這都是使用多項現代化服務的關鍵作業。您可以透過許多方式 在 Chrome 擴充功能中進行即時通訊
- Web Push (或簡稱 Push API) 是一項網路標準,可讓您從任何推送服務供應商,甚至是自己的網路伺服器,在 Chrome 擴充功能中收發訊息。
- chrome.gcm 是舊版擴充功能專用 API,可讓您使用 Firebase 雲端通訊收發訊息。
- WebSockets 是一種低階通訊協定,可讓您在 Chrome 擴充功能和伺服器之間建立雙向連線。
常見情況
以下是 Chrome 擴充功能中對即時通訊至關重要的幾種常見情況:
讓使用者掌握最新的異動資訊。
如要在多位使用者之間同步處理檔案、設定或其他資訊,Web Push 非常適合向擴充功能傳送無訊息更新,通知擴充功能可從伺服器更新狀態。
您要讓使用者回報錯誤或問題嗎?您可以與 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 Provider 傳送推播通知和訊息。收到 Push API 的推送項目後,服務工作站就會立即處理。如果擴充功能已暫停,推送程序會將其喚醒。在擴充功能中使用擴充功能的程序,與在開放網路中使用的程序完全相同。
使用 chrome.gcm 推播通知
chrome.gcm API 可直接連線至 Firebase 雲端通訊 (FCM),這是可將即時更新傳送至網頁應用程式和行動應用程式的服務。這是 Chrome 專屬擴充功能 API,我們在瀏覽器推出 Push 的數年前就推出此 API。該版本是使用 Firebase (現已淘汰) 的舊版 HTTP API 建構而成。雖然這些 API 在其他地方遭到淘汰,但這些 API「並未」在擴充功能中淘汰。因為在可預見的未來,他們將繼續工作。但由於這是舊版推送後端,因此缺少 Topics 等功能。
雖然 FCM 後端服務並不是要透過 Chrome 傳達使用者資訊的硬性規定,但您不需要使用 chrome.gcm
傳送訊息。所有推送供應商都可以使用網路推送,傳送及接收訊息和事件至 Firebase 帳戶。雖然該 API 仍然是完全支援的 Chrome Extension API,但建議您還是優先使用 Push API 等網路標準來擴充這類 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 存在的範例。