Broadcast channel
Aynı kökenli sekmeler arası mesajlaşmayı BroadcastChannel ile yapmayı öğrenirsin.
BroadcastChannel
BroadcastChannel aynı kökenli (same-origin) sekmeler, pencereler ve iframe'ler arasında mesajlaşmayı sağlar. Bir sekmeden gönderilen mesaj, diğer tüm sekmelerdeki aynı adlı kanalda dinlenir. Sunucu gerekmez; tüm iletişim tarayıcı içindedir.
Önce new BroadcastChannel('metrics') ile kanalı oluşturursun. Mesaj göndermek için channel.postMessage(data), dinlemek için channel.onmessage kullanırsın. İşin bitince channel.close() ile kanalı kapatırsın.
Aynı köken sınırı
Aynı köken sınırı önemlidir: kanal yalnızca aynı protokol, alan adı ve porttan açılan sekmelerde çalışır. http://site.com ile https://site.com ayrı kökenlerdir; aralarında mesaj gitmez. Bu, güvenlik için konulmuş bir gerekliliktir.
Gelen mesaj event.data içinde taşınır. Mesaj her zaman diğer sekmelere gider; gönderen sekme kendi mesajını almaz. Birden çok sekme açıkken her biri ayrı bir alıcıdır.
Uygulama metrics kanalında mesaj yayınla
'metrics' adında bir BroadcastChannel oluştur. postMessage ile { value: 42 } gönder.
Örnek çözümü göster
1. const channel = new BroadcastChannel('metrics') ile kanalı oluştur.
2. channel.postMessage({ value: 42 }) ile mesajı gönder.
Örnek çözüm:
const channel = new BroadcastChannel('metrics');
channel.postMessage({ value: 42 });
Kendini test et
-
Mesaj gönder
channel.____({ value: 42 });Cevabı göster
channel.postMessage({ value: 42 }); -
BroadcastChannel hangi sekmeler arasında çalışır?
- Aynı kökenli (same-origin) sekmeler arasında
- Tüm tarayıcıdaki sekmeler arasında
- Yalnızca aynı sekmede
- Farklı cihazlar arasında
Cevabı göster
Aynı kökenli (same-origin) sekmeler arasında — Doğru. BroadcastChannel yalnızca aynı kökenli sekmelerde çalışır; bu bir güvenlik sınırdır.
-
BroadcastChannel metotlarını eşleştir
- constructor
- Kanalı oluşturur
- postMessage
- Mesaj gönderir
- onmessage
- Mesaj alır
- close
- Kanalı kapatır