jak wysyłać wiadomości za pomocą kanału transmisji API

John Au-Yeung
Mar 23, 2020 · 3 min Czytaj

związku z tym, że w 2011 r. w ramach projektu

, w 2011 r. w ramach projektu, w 2011 r. w ramach projektu”b92da0c61″w ramach projektu”b92da0c61″w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „b92da0c61” w ramach projektu „figcaption>zdjęcie Ricardo Gomez Angel na Unsplash

aby wysyłać wiadomości między kontekstami przeglądania, takimi jak okna, karty, ramki lub ramki iframe w tym samym pochodzeniu, możemy użyć Broadcast Channel API.

w tym artykule przyjrzymy się, jak używać go do wysyłania i odbierania wiadomości.

aby korzystać z API, musimy utworzyć BroadcastChannel obiekt, który nasłuchuje bazowego kanału.

wtedy jesteśmy w stanie odbierać wszelkie wiadomości, które zostały do niego wysłane. Nie musimy utrzymywać odniesienia do ram iframe lub pracowników, z którymi chcemy się komunikować.

wszystko w obrębie tego samego źródła może subskrybować konkretny kanał, tworzącBroadcasChannel, a następnie będą one miały komunikację w pełnym dupleksie między nimi wszystkimi.

możemy użyć go w następujący sposób:

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

w powyższym kodzie utworzyliśmyBroadcastChannel instancję, a następnie wywołaliśmypostMessage I ustawiliśmyonmessage właściwość aby odsłuchać wiadomości, które zostały wysłane.

dostęp do danych jest możliwy przy pomocy właściwości data.

możemy wtedy wywołać close, aby zamknąć kanał, gdy skończymy.

możemy wysłać dowolny obiekt, a nie tylko łańcuch znaków.

Zdarzenie wiadomości

parametrev w funkcji obsługionmessage jest obiektemMessageEvent.

posiada kilka właściwości tylko do odczytu, do których mamy dostęp:

  • data-dane wysyłane przez emiter wiadomości. Będzie to zawartość, którą przekazaliśmy do postMessage
  • origin — łańcuch znaków reprezentujący początek wysyłanej wiadomości
  • lastEventId — łańcuch znaków reprezentujący unikalny identyfikator zdarzenia
  • source — a MessageEventSource obiekt, (który może być WindowProxyMessagePort lub ServiceWorker obiekt), reprezentujący emiter wiadomości
  • ports — tablica MessagePort obiekt reprezentujący porty powiązane z kanałem, przez który wysyłana jest wiadomość.

Obsługa błędów

aby obsługiwać błędy przy wysyłaniu wiadomości, możemy ustawić obsługę zdarzenia naonmessageerror właściwość obiektu Broadcast Channel.

na przykład możemy napisać:

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

wtedy możemy rejestrować wszelkie pojawiające się błędy.

fot. Paweł kadysz na Unsplash

nazwa

możemy uzyskać nazwę kanału z właściwościąname.

aby to zrobić, możemy napisać:

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

wtedy widzimy, że nazwa naszego kanału nadawczego totest_channel zconsole.log .

wniosek

API kanału transmisji jest bardzo prostym API, które pozwala nam na komunikację międzysektorową.

może być używany do wykrywania działań użytkownika na innych kartach w tym samym środowisku pochodzenia witryny, na przykład gdy użytkownik loguje się na konto.

nie ma protokołu przesyłania wiadomości i różne dokumenty w różnych kontekstach muszą go zaimplementować.

również nie ma negocjacji i nie jest to wymagane przez specyfikację.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.