即時更新功能可建立從伺服器直接到擴充功能安裝位置的即時通訊路徑。您可以傳送及接收事件發生時的資料。無論是即時通訊、觸發背景工作,還是同步處理裝置資料,這項作業對許多現代服務來說都至關重要。Chrome 擴充功能提供多種即時通訊選項。
- 網頁推送或 Push API 是一種網頁標準,可讓您透過任何推送服務供應商,甚至透過自己的網路伺服器,在 Chrome 擴充功能中傳送及接收訊息。
- chrome.gcm 是舊版擴充功能專用 API,可讓您使用 Firebase 雲端通訊傳送及接收訊息。
- WebSockets 是一種低階通訊協定,可讓您在 Chrome 擴充功能和伺服器之間開啟雙向連線。
常見情況
以下是 Chrome 擴充功能中,即時通訊至關重要的常見情境:
讓使用者隨時掌握異動。
如果您要在多位使用者之間同步處理檔案、設定或其他資訊,Web Push 是將無聲更新傳送至擴充功能的絕佳方式,可讓擴充功能知道要從伺服器更新狀態。
是否允許使用者回報錯誤或問題?您可以與 Push 供應商整合,直接在擴充功能中分享最新資訊。
傳送通知給使用者。
雖然您可以完全在用戶端傳送通知,但如果您有伺服器端邏輯,可判斷要傳送通知的對象、內容、位置或時間,那麼 Web Push 就是最能因應未來變化的選項。
如要只傳送訊息給部分使用者,建議使用「推送」。
Firebase 雲端通訊確實提供主題 (也稱為管道),但僅適用於 HTTP Cloud Messaging API。這與 chrome.gcm 使用的舊版不同。如要向所有使用者 (包括使用舊版 Chrome (Chrome 121 以前版本) 的使用者) 傳送廣播訊息,chrome.gcm 是理想的選擇。chrome.gcm 是以舊版 Firebase 訊息傳送 API 為基礎建構而成,Chrome 支援這項功能已超過十年。
當使用者帳戶發生重要事件 (例如收到新訊息或有人分享檔案),您可以使用網頁推播或 chrome.gcm 傳送通知。
即時通訊
需要頻繁的雙向通訊嗎?那麼網路通訊端或許是最佳選擇。這會在擴充功能和伺服器之間 (甚至直接與其他使用者) 開啟雙向連線。你可以透過這項服務即時交換資料和訊息。雖然一般來說,這類元素是網頁上的絕佳選項,但擴充功能有一些限制,如果您打算使用,請務必留意。
本指南的其餘部分會詳細介紹可用的選項。
使用 Push API 傳送推播通知
使用 Push API 時,您可以透過任何 Push 供應商傳送推播通知和訊息。Service Worker 收到 Push API 的推送後,就會立即處理。如果擴充功能已暫停,Push 會喚醒擴充功能。在擴充功能中使用這項服務的程序,與在開放式網路上使用完全相同。
使用 chrome.gcm 的推播通知
chrome.gcm API 可直接連線至 Firebase 雲端通訊 (FCM),這項服務可將即時更新傳送至網頁應用程式和行動應用程式。這是 Chrome 專用的擴充功能 API,早在瀏覽器推出 Push 之前就已加入。這個應用程式是使用 Firebase 的舊版 HTTP API (現已淘汰) 建構而成。雖然這些 API 在其他地方已淘汰,但在擴充功能中並未淘汰。在可預見的將來,這類 API 仍可繼續運作。不過,由於這是舊版推播後端,因此缺少主題等功能。
雖然 FCM 後端服務是通知傳送至 Chrome 使用者的必要條件,但您不必使用 chrome.gcm 傳送訊息。所有 Push 通知供應商都能透過網頁 Push 通知,在 Firebase 帳戶中傳送及接收訊息和事件。雖然這仍是 Chrome 擴充功能 API 的完整支援項目,但最佳做法是優先使用 Push API 等網路標準,而非這類擴充功能專屬的 API。如果您的用途最適合使用 chrome.gcm,請參閱這篇詳細的操作說明,瞭解如何從頭設定 chrome.gcm。
透過 WebSocket 傳送即時訊息
WebSockets 是網路上即時通訊的基石,長期以來,這類技術一直是網路即時事件的首選,可提供持續的雙向對話。WebSocket 可在各種擴充功能元件中運作,包括內容指令碼、彈出式視窗、側邊面板或背景服務工作人員。雖然一般來說,這些瀏覽器是絕佳的網路選擇,但如果您打算使用擴充功能,請留意這些瀏覽器的一些限制。
不適合推播通知
由於 WebSocket 是在網頁平台中執行,而不是使用擴充功能平台 API (例如 chrome.gcm),因此當 WebSocket 連線在擴充功能外部啟動時,Chrome 無法喚醒擴充功能。
僅限有效連線
Chrome 會在 30 秒後暫停未使用的擴充功能。Chrome 會根據多項啟發式方法判斷擴充功能是否「正在使用中」,其中一項是有效的 WebSocket 連線。如果擴充功能在過去 30 秒內傳送或接收 WebSocket 訊息,Chrome 就不會暫停該擴充功能。如果您在擴充功能中使用 WebSocket,且需要確保 WebSocket 不會過早關閉,可以傳送心跳訊息來維持連線。這項作業會定期傳送訊息給伺服器,讓伺服器和 Chrome 知道您仍處於活動狀態。如要瞭解如何無限期保持 WebSocket 連線,請參閱 WebSocket 說明文件。