så här skickar du meddelanden med sändningskanalen API

John Au-Yeung
23 Mar 2020 · 3 min läs

figcaption > foto av Ricardo Gomez Angel på Unsplash

för att skicka meddelanden mellan bläddringssammanhang som Windows, flikar, ram eller Iframes inom samma ursprung kan vi använda Broadcast kanal API.

i den här artikeln tittar vi på hur du använder den för att skicka och ta emot meddelanden.

för att använda API måste vi skapa ettBroadcastChannel objekt som lyssnar på den underliggande kanalen.

då kan vi ta emot alla meddelanden som har skickats till den. Vi behöver inte upprätthålla en hänvisning till Iframes eller arbetstagare som vi vill kommunicera med.

allt inom samma ursprung kan prenumerera på en viss kanal genom att skapa ett BroadcasChannel och sedan har de full duplex kommunikation mellan dem alla.

Vi kan använda det på följande sätt:

const bc = new BroadcastChannel("test_channel");
bc.postMessage("test");
bc.onmessage = ev => {
console.log(ev.data);
};
bc.close();

i koden ovan skapade vi en BroadcastChannel instans och sedan kallade vi postMessage och ställ in onmessage egenskap till lyssna på meddelanden som skickades.

data nås genom att använda egenskapen data.

Vi kan sedan ringa close för att stänga kanalen när vi är klara.

Vi kan skicka alla typer av objekt och inte bara en sträng.

Meddelandehändelse

parameternev Ionmessage hanteraren ärMessageEvent objektet.

det har några skrivskyddade egenskaper som vi kan komma åt:

  • data — data som skickas av meddelandesändaren. Detta kommer att vara innehållet som vi passerade in i postMessage
  • origin — en sträng som representerar ursprunget för meddelandet som avges
  • lastEventId — en sträng som representerar ett unikt ID för händelsen
  • source — a MessageEventSource objekt, (som kan vara ett WindowProxyMessagePort, eller ServiceWorker objekt), som representerar meddelandesändaren
  • ports — en array av MessagePort objekt som representerar portar som är associerade med kanalen meddelandet skickas genom.

hanteringsfel

för att hantera fel med att skicka meddelanden kan vi ställa in en händelsehanterare till egenskapen onmessageerror för Broadcast Channel-objektet.

till exempel kan vi skriva:

bc.onmessageerror = e => console.log(e);

då kan vi logga eventuella fel som kommer upp.

foto av Pawel kadysz på Unsplash

namn

Vi kan få namnet på kanalen med egenskapen name.

för att göra detta kan vi skriva:

const bc = new BroadcastChannel("test_channel");
console.log(bc.name);

då kan vi se att vår sändningskanal heter test_channel från console.log .

slutsats

Broadcast Channel API är ett mycket enkelt API som låter oss göra kommunikation mellan sammanhang.

den kan användas för att upptäcka användaråtgärder i de andra flikarna inom samma plats ursprung miljö som när en användare loggar in på ett konto.

det finns inget meddelandeprotokoll och olika dokument i olika sammanhang behöver implementera det själva.

det finns också ingen förhandling och det krävs inte av specifikationen.

Lämna ett svar

Din e-postadress kommer inte publiceras.