Echtzeit-Updates ermöglichen eine sofortige Kommunikation zwischen Ihren Servern und Ihren Erweiterungsinstallationen. Sie können Daten senden und empfangen, sobald Ereignisse eintreten. Ob Sie ihn für Instant Messaging, das Auslösen von Hintergrundaufgaben oder das Synchronisieren von Gerätedaten verwenden, er ist ein wichtiger Vorgang für eine Reihe moderner Dienste. Es gibt verschiedene Möglichkeiten, Echtzeitkommunikation in Chrome-Erweiterungen zu ermöglichen.
- Web Push oder die Push API ist ein Webstandard, mit dem Sie Nachrichten in einer Chrome-Erweiterung von einem beliebigen Push-Anbieter oder sogar von Ihrem eigenen Webserver aus senden und empfangen können.
- chrome.gcm ist eine alte, extensionspezifische API, mit der Sie Nachrichten über 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 entscheidend ist:
Nutzer über Änderungen auf dem Laufenden halten
Wenn Sie Dateien, Einstellungen oder andere Informationen zwischen mehreren Nutzern synchronisieren, ist Web Push die perfekte Möglichkeit, stille Updates an Ihre Erweiterung zu senden, damit sie den Status vom Server aktualisiert.
Ermöglichen Sie Nutzern, Fehler oder Probleme zu melden? Sie können einen Push-Anbieter in Ihre Erweiterung einbinden, damit er sofort benachrichtigt wird, wenn Sie ein Update haben.
Benachrichtigungen an Nutzer senden
Sie können Benachrichtigungen zwar vollständig clientseitig senden, aber wenn Sie serverseitige Logik dafür haben, wem, was, wo oder wann eine Benachrichtigung gesendet werden soll, ist Web Push die zukunftssicherste Option.
Wenn Sie Nachrichten nur an eine Teilmenge von Nutzern senden möchten, ist Push die beste Wahl.
Firebase Cloud Messaging bietet zwar Themen (auch als Channels bezeichnet), diese sind jedoch nur in der HTTP Cloud Messaging API verfügbar. Dies unterscheidet sich von der Legacy-Version, die chrome.gcm verwendet. Wenn Sie allgemeine 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 Messaging-APIs der alten Firebase-Version und wird seit über einem Jahrzehnt in Chrome unterstützt.
Sie können Web-Push-Benachrichtigungen oder chrome.gcm verwenden, um Nutzer zu benachrichtigen, wenn etwas Wichtiges in ihrem Konto passiert, z. B. wenn eine neue Nachricht eingeht oder eine Datei geteilt wird.
Chat
Benötigen Sie 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) geöffnet. Sie können Daten und Nachrichten in Echtzeit austauschen. Sie sind zwar im Allgemeinen eine gute Option im Web, haben aber einige Einschränkungen bei Erweiterungen, die Sie beachten müssen, wenn Sie sie verwenden möchten.
Im Rest dieses Leitfadens sehen wir uns die verfügbaren Optionen genauer an.
Push-Benachrichtigungen mit der Push API
Mit der Push API können Sie Push-Benachrichtigungen und ‑Nachrichten über einen beliebigen Push-Anbieter senden. Ein Push von der Push API wird von Ihrem Service Worker verarbeitet, sobald er empfangen wird. Wenn die Erweiterung gesperrt wurde, kann sie durch einen Push wieder aktiviert werden. Die Verwendung in Erweiterungen ist genau dieselbe 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 Chrome-spezifische Erweiterungs-API, die viele Jahre vor der Verfügbarkeit von Push in Browsern hinzugefügt wurde. Sie wurde mit den (inzwischen verworfenen) Legacy-HTTP-APIs von Firebase entwickelt. Diese APIs sind zwar an anderer Stelle veraltet, nicht aber in Erweiterungen. Sie werden auf absehbare Zeit weiterhin funktionieren. Da es sich jedoch um das alte Push-Back-End handelt, fehlen Funktionen wie Themen.
Ein FCM-Backend-Dienst ist zwar eine wichtige Voraussetzung dafür, dass Nutzer in Chrome Benachrichtigungen erhalten, aber Sie müssen chrome.gcm nicht verwenden, um Nachrichten zu senden.
Alle Push-Anbieter können Nachrichten und Ereignisse über Web-Push an ein Firebase-Konto senden und von dort empfangen. Diese API für Chrome-Erweiterungen wird zwar weiterhin vollständig unterstützt, es empfiehlt sich jedoch, Webstandards wie die Push API gegenüber Erweiterungs-APIs wie dieser zu bevorzugen. Wenn Ihr Anwendungsfall am besten mit chrome.gcm abgedeckt wird, finden Sie hier eine detaillierte Anleitung zum Einrichten von chrome.gcm.
Echtzeitnachrichten mit WebSockets
WebSockets sind seit über einem Jahrzehnt ein Eckpfeiler des Echtzeit-Messaging im Web. Sie waren die erste Wahl für Echtzeitereignisse im Web und ermöglichten eine kontinuierliche, bidirektionale Kommunikation. WebSockets funktionieren in verschiedenen Erweiterungskomponenten, z. B. in Content-Scripts, Pop-ups, Seitenleisten oder Hintergrund-Service-Workern. Sie sind zwar im Allgemeinen eine gute Option im Web, haben aber einige Einschränkungen bei Erweiterungen, die Sie beachten müssen, wenn Sie sie verwenden möchten.
Nicht gut für Push-Benachrichtigungen
Da WebSockets auf der Webplattform ausgeführt werden und nicht über eine Erweiterungsplattform-API wie chrome.gcm, kann Chrome Ihre Erweiterung nicht aktivieren, wenn eine WebSocket-Verbindung außerhalb Ihrer Erweiterung gestartet wird.
Nur aktive Verbindungen
Chrome deaktiviert Erweiterungen, die seit 30 Sekunden nicht verwendet werden. Chrome verwendet eine Reihe von Heuristiken, um festzustellen, ob die Erweiterung „verwendet wird“. Eine davon ist eine aktive WebSocket-Verbindung. Chrome setzt keine Erweiterung aus, die in den letzten 30 Sekunden eine WebSocket-Nachricht gesendet oder empfangen hat. Wenn Sie WebSockets in Ihrer Erweiterung verwenden und sicherstellen müssen, dass die Verbindung nicht vorzeitig geschlossen wird, können Sie eine Heartbeat-Nachricht senden, um die Verbindung aufrechtzuerhalten. Dazu werden regelmäßig Nachrichten an den Server gesendet, damit sowohl der Server als auch Chrome wissen, dass Sie noch aktiv sind. Ein Beispiel dafür, wie eine WebSocket-Verbindung unbegrenzt aufrechterhalten werden kann, finden Sie in unserer WebSocket-Dokumentation.