Updates in Echtzeit in Erweiterungen

Echtzeitaktualisierungen bieten einen sofortigen Kommunikationspfad von Ihren Servern direkt zu Ihren Erweiterungsinstallationen. Sie können Daten senden und empfangen, wenn Ereignisse eintreten. Unabhängig davon, ob Sie sie für Instant Messaging, zum Auslösen von Hintergrundaufgaben oder zum Synchronisieren von Gerätedaten verwenden, ist dies ein wichtiger Vorgang bei einer Reihe moderner Dienste. Es gibt eine Reihe von Möglichkeiten für die Echtzeitkommunikation in Chrome-Erweiterungen.

  • Web Push oder die Push API ist ein Webstandard, mit dem Sie Nachrichten in Chrome-Erweiterungen von einem beliebigen Push-Anbieter oder sogar mit Ihrem eigenen Webserver senden und empfangen können.
  • chrome.gcm ist eine alte erweiterungsspezifische API, mit der Sie Nachrichten mit Firebase Cloud Messaging senden und empfangen können.
  • WebSockets ist ein Low-Level-Protokoll, mit dem Sie eine bidirektionale Verbindung zwischen Ihrer Chrome-Erweiterung und Ihrem Server herstellen können.

Häufige Szenarien

Hier sind einige gängige Szenarien in Chrome-Erweiterungen, in denen Echtzeitkommunikation von entscheidender Bedeutung ist:

Nutzer über Änderungen auf dem Laufenden halten

Wenn Sie Dateien, Einstellungen oder andere Informationen zwischen mehreren Nutzern synchronisieren, ist Web Push die perfekte Methode, um im Hintergrund an Ihre Erweiterung Aktualisierungen zu senden, damit sie weiß, dass der Serverstatus aktualisiert werden soll.

Können Nutzer Fehler oder Probleme melden? Sie können einen Push-Anbieter einbinden, um diesen direkt in Ihrer Erweiterung zu informieren, sobald Sie ein Update freigeben müssen.

Benachrichtigungen an Nutzer senden

Sie können Benachrichtigungen zwar vollständig clientseitig senden, aber wenn Sie serverseitige Logik dafür haben, wer, was, wo oder wann eine Benachrichtigung senden soll, ist Web Push die zukunftssichere Option.

Um Nachrichten nur an eine Untergruppe von Nutzern zu senden, ist Push die beste Wahl. Firebase Cloud Messaging bietet zwar Topics (auch als Kanäle bezeichnet), ist jedoch nur in der entsprechenden HTTP Cloud Messaging API verfügbar. Dies unterscheidet sich von der Legacy-Version, die chrome.gcm verwendet. Wenn Sie weitgehend passende Nachrichten an alle Nutzer senden möchten, auch an Nutzer mit älteren Chrome-Versionen (vor Chrome 121), ist chrome.gcm die ideale Option. chrome.gcm basiert auf den Legacy-Nachrichten-APIs von Firebase und wird seit über einem Jahrzehnt in Chrome unterstützt.

Sie können Web Push oder chrome.gcm verwenden, um Benachrichtigungen an Nutzer zu senden, wenn etwas für ihr Konto wichtig ist, z. B. wenn eine neue Nachricht eingeht oder eine Datei freigegeben wird.

Instant Messaging

Sie benötigen eine häufige Zwei-Wege-Kommunikation? Dann ist ein WebSocket möglicherweise die beste Option für Sie. Dadurch wird eine bidirektionale Verbindung zwischen Ihrer Erweiterung und Ihrem Server (oder sogar direkt zu anderen Nutzern) hergestellt. Sie können Daten und Nachrichten in Echtzeit austauschen. Obwohl diese Erweiterungen im Web generell eine gute Option sind, unterliegen sie einigen Einschränkungen bei Erweiterungen, die Sie berücksichtigen müssen, wenn Sie sie verwenden möchten.

Im weiteren Verlauf dieses Leitfadens sehen wir uns die verfügbaren Optionen genauer an.

Push-Benachrichtigungen mit der Push API

Mit der Push API können Sie einen beliebigen Push-Anbieter verwenden, um Push-Benachrichtigungen und -Nachrichten zu senden. Ein Push von der Push API wird von Ihrem Service Worker verarbeitet, sobald er empfangen wird. Wenn die Erweiterung gesperrt wurde, wird sie durch einen Push wieder aktiviert. Die Verwendung von Erweiterungen in Erweiterungen erfolgt genauso wie im offenen Web.

Push-Benachrichtigungen mit chrome.gcm

Die chrome.gcm API bietet eine direkte Verbindung zu Firebase Cloud Messaging (FCM), einem Dienst zum Senden von Echtzeitaktualisierungen an Webanwendungen und mobile Apps. Dies ist eine Erweiterungs-API für Chrome, die viele Jahre vor der Einführung von Push in Browsern hinzugefügt wurde. Es wurde mit den Legacy-HTTP-APIs von Firebase (jetzt verworfen) erstellt. Diese APIs wurden zwar an anderer Stelle eingestellt, nicht in Erweiterungen. Sie werden auf absehbare Zeit weiterhin arbeiten. Da es sich hierbei jedoch um das Legacy-Push-Back-End handelt, fehlen darin Funktionen wie Topics.

Ein FCM-Back-End-Dienst ist zwar eine Voraussetzung dafür, dass Benachrichtigungen Nutzer in Chrome erreichen, aber chrome.gcm ist nicht erforderlich, um Nachrichten zu senden. Alle Push-Anbieter können mit dem Web-Push Nachrichten und Ereignisse an ein Firebase-Konto senden und von dort empfangen. Obwohl es sich um eine vollständig unterstützte Chrome Extension API handelt, empfiehlt es sich, Webstandards wie die Push API gegenüber erweiterungsspezifischen Standards wie diesem zu bevorzugen. Wenn für Ihren Anwendungsfall chrome.gcm am besten geeignet ist, finden Sie eine ausführliche Anleitung zur komplett neuen Einrichtung von chrome.gcm.

Echtzeitnachrichten mit WebSockets

WebSockets ist seit über einem Jahrzehnt ein Eckpfeiler des Echtzeit-Messaging im Web. Sie sind die bevorzugte Option für Echtzeitereignisse im Web und bieten eine kontinuierliche, bidirektionale Kommunikation. WebSockets funktioniert in einer Vielzahl von Erweiterungskomponenten, wie z. B. in Inhaltsskripts, Pop-ups, Sidepanels und Hintergrunddienst-Workern. Obwohl sie im Web generell eine gute Option sind, gibt es bei Erweiterungen einige Einschränkungen, die Sie berücksichtigen müssen, wenn Sie sie verwenden möchten.

Nicht gut für Push-Benachrichtigungen geeignet

Da WebSockets auf der Webplattform ausgeführt werden und keine Erweiterungsplattform-API wie chrome.gcm verwendet wird, hat Chrome keine Möglichkeit, die Erweiterung zu aktivieren, wenn eine WebSocket-Verbindung außerhalb der Erweiterung gestartet wird.

Nur aktive Verbindungen

Nicht verwendete Erweiterungen werden nach 30 Sekunden von Chrome gesperrt. Chrome bestimmt anhand verschiedener Heuristiken, ob die Erweiterung "verwendet" wird. Eine davon ist eine aktive WebSocket-Verbindung. Chrome sperrt keine Erweiterung, die in den letzten 30 Sekunden eine WebSocket-Nachricht gesendet oder empfangen hat. Wenn Sie in Ihrer Erweiterung WebSockets verwenden und sicherstellen müssen, dass dies nicht vorzeitig geschlossen wird, können Sie eine Heartbeat-Nachricht senden, um die Verbindung aufrechtzuerhalten. Dazu werden regelmäßig Nachrichten an den Server gesendet, um sowohl diesem als auch Chrome mitzuteilen, dass Sie noch aktiv sind. Ein Beispiel dafür, wie ein WebSocket auf unbestimmte Zeit aktiv bleibt, finden Sie in unserer WebSocket-Dokumentation.