Realtime-updates in extensies

Realtime-updates bieden een directe communicatieverbinding tussen uw servers en uw extensie-installaties. U kunt gegevens verzenden en ontvangen zodra er gebeurtenissen plaatsvinden. Of u het nu gebruikt voor instant messaging, het activeren van achtergrondtaken of het synchroniseren van apparaatgegevens, het is een essentiële functie voor een aantal moderne services. Er zijn verschillende opties voor realtime communicatie in Chrome-extensies.

  • Web Push , ofwel de Push API, is een webstandaard waarmee je berichten kunt verzenden en ontvangen in een Chrome-extensie van elke pushprovider , of zelfs met je eigen webserver.
  • chrome.gcm is een verouderde, extensiespecifieke API waarmee je berichten kunt verzenden en ontvangen via Firebase Cloud Messaging.
  • WebSockets is een protocol op laag niveau waarmee je een bidirectionele verbinding kunt opzetten tussen je Chrome-extensie en je server.

Veelvoorkomende scenario's

Hieronder volgen enkele veelvoorkomende scenario's in Chrome-extensies waarbij realtime communicatie cruciaal is:

Houd gebruikers op de hoogte van wijzigingen.

Als u bestanden, instellingen of andere informatie synchroniseert tussen meerdere gebruikers, is Web Push de perfecte manier om stilletjes updates naar uw extensie te sturen, zodat deze weet dat de status van de server moet worden bijgewerkt.

Geef je gebruikers de mogelijkheid om bugs of problemen te melden? Je kunt integreren met een pushprovider, zodat ze direct in je extensie op de hoogte worden gesteld zodra er een update beschikbaar is.

Stuur meldingen naar gebruikers.

Hoewel je notificaties volledig aan de clientzijde kunt versturen, is Web Push de meest toekomstbestendige optie als je serverlogica hebt voor wie, wat, waar en wanneer een notificatie moet worden verzonden.

Voor het verzenden van berichten naar slechts een subset van gebruikers is Push de beste keuze. Hoewel Firebase Cloud Messaging wel Topics (ook wel kanalen genoemd) ondersteunt, is dit alleen beschikbaar in de HTTP Cloud Messaging API. Dit is anders dan de oudere versie die chrome.gcm gebruikt. Als u algemene berichten wilt verzenden naar alle gebruikers, inclusief die met oudere versies van Chrome (vóór Chrome 121), dan is chrome.gcm de ideale optie. chrome.gcm is gebouwd op de oudere Firebase-berichten-API's en wordt al meer dan tien jaar ondersteund in Chrome.

Je kunt Web Push of chrome.gcm gebruiken om gebruikers op de hoogte te stellen wanneer er iets belangrijks met hun account gebeurt, bijvoorbeeld wanneer er een nieuw bericht binnenkomt of wanneer een bestand wordt gedeeld.

Instant Messaging

Heeft u frequente, tweewegcommunicatie nodig? Dan is een websocket wellicht de beste optie. Het opent een bidirectionele verbinding tussen uw extensie en uw server (of zelfs rechtstreeks met andere gebruikers). Hiermee kunt u in realtime gegevens en berichten uitwisselen. Hoewel websockets over het algemeen een uitstekende optie zijn voor webtoepassingen, hebben ze wel enkele beperkingen met betrekking tot extensies waarmee u rekening moet houden als u ze wilt gebruiken.

In de rest van deze handleiding zullen we de beschikbare opties nader bekijken.

Pushmeldingen met de Push API

Met de Push API kunt u elke pushprovider gebruiken om pushmeldingen en -berichten te verzenden. Een push van de Push API wordt door uw service worker verwerkt zodra deze binnenkomt. Als de extensie is opgeschort, zal een push deze weer activeren. Het gebruik ervan in extensies is precies hetzelfde als op het open web.

Pushmeldingen met chrome.gcm

De chrome.gcm API biedt een directe verbinding met Firebase Cloud Messaging (FCM), een service voor het verzenden van realtime updates naar webapplicaties en mobiele apps. Dit is een Chrome-specifieke extensie-API die al vele jaren geleden werd toegevoegd, voordat pushmeldingen beschikbaar waren in browsers. De API is gebouwd met behulp van de (inmiddels verouderde) HTTP-API's van Firebase. Hoewel deze API's elders verouderd zijn, zijn ze dat niet voor extensies. Ze zullen naar verwachting nog steeds werken. Omdat dit echter de verouderde push-backend is, ontbreken er functies zoals Topics .

Hoewel een FCM-backendservice een absolute vereiste is om notificaties in Chrome te kunnen versturen, hoeft u chrome.gcm niet te gebruiken om berichten te verzenden. Alle pushproviders kunnen berichten en gebeurtenissen naar een Firebase-account verzenden en ontvangen via de webpush. Hoewel dit nog steeds een volledig ondersteunde Chrome-extensie-API is, is het raadzaam om webstandaarden zoals de push-API te verkiezen boven extensiespecifieke API's zoals deze. Als uw gebruikssituatie het best gediend is met chrome.gcm, vindt u een gedetailleerde handleiding voor het instellen ervan.

Realtime berichten via WebSockets

WebSockets vormen al meer dan tien jaar een hoeksteen van realtime berichtenverkeer op het web. Ze zijn de standaardoptie voor realtime gebeurtenissen op het web en bieden een continue, bidirectionele communicatie. WebSockets werken met diverse extensiecomponenten , zoals content scripts , pop-ups , zijpanelen of achtergrondservices . Hoewel ze over het algemeen een uitstekende optie zijn voor het web, hebben ze wel enkele beperkingen met extensies waar je rekening mee moet houden als je ze wilt gebruiken.

Niet ideaal voor pushmeldingen.

Omdat WebSockets binnen het webplatform draaien in plaats van via een API van een extensieplatform zoals chrome.gcm , kan Chrome uw extensie niet activeren wanneer een WebSocket-verbinding buiten uw extensie tot stand komt.

Alleen actieve verbindingen

Chrome zet extensies die niet worden gebruikt na 30 seconden uit. Chrome gebruikt verschillende criteria om te bepalen of een extensie "in gebruik" is, waaronder een actieve WebSocket-verbinding. Chrome zet een extensie die in de afgelopen 30 seconden een WebSocket-bericht heeft verzonden of ontvangen niet uit. Als je WebSockets in je extensie gebruikt en wilt voorkomen dat de verbinding voortijdig wordt verbroken, kun je een heartbeat -bericht verzenden om de verbinding te behouden. Dit houdt in dat je periodiek berichten naar de server stuurt, waarmee je zowel de server als Chrome laat weten dat je nog steeds actief bent. Een voorbeeld van hoe je een WebSocket-verbinding onbeperkt actief kunt houden, vind je in onze WebSocket-documentatie .