MessageChannel
MessageChannel ile iki port arası iki yönlü haberleşmeyi öğrenirsin.
MessageChannel
MessageChannel iki uç arasında iki yönlü haberleşme kurar. Oluşturduğunda sana bir çift port verir: port1 ve port2. Bir porttan gönderdiğin mesaj, diğer portta dinlenir. Bu, örneğin ana sayfa ile bir web worker arasındaki doğrudan kanal için kullanışlıdır.
Portlardan birini karşı tarafa gönderirsin (örneğin postMessage ile channel.port2'yi aktarırsın), kendine kalan port üzerinden de mesaj alırsın. Böylece birebir iletişim kurulur.
MessagePort metotları
Her port bir MessagePort nesnesidir. Başlıca metotları şunlardır: postMessage(data) ile mesaj gönderirsin, onmessage ile gelen mesajları dinlersin. start ile mesaj kuyruğunu açarsın; close ile portu kapatırsın.
Bir portu başka bir bağlama (örneğin worker'a) gönderdiğinde, o portta mesajların işlenebilmesi için alıcı tarafta start çağrılması gerekir. onmessage atamak çoğu durumda otomatik başlatır ama açıkça çağırmak daha güvenlidir.
Uygulama İki port arası mesaj
Bir MessageChannel oluştur. port2'ye gelen mesajı dinle: channel.port2.onmessage ile event.data'yı konsola yaz. port1.postMessage('hello') ile mesaj gönder.
Örnek çözümü göster
1. const channel = new MessageChannel() ile oluştur.
2. channel.port2.onmessage = (event) => console.log(event.data) ile dinle.
3. channel.port1.postMessage('hello') ile gönder.
Örnek çözüm:
const channel = new MessageChannel();
channel.port2.onmessage = (event) => {
console.log(event.data);
};
channel.port1.postMessage('hello');
Kendini test et
-
MessageChannel oluşturduğunda hangi iki port elde edersin?
- input ve output
- port1 ve port2
- sender ve receiver
- left ve right
Cevabı göster
port1 ve port2 — Doğru. MessageChannel oluşturduğunda port1 ve port2 adlı iki port elde edersin.
-
port1 üzerinde dinleme
channel.port1.____= (event) => console.log(event.data);Cevabı göster
channel.port1.onmessage= (event) => console.log(event.data); -
MessagePort metotlarını eşleştir
- postMessage
- Mesaj gönderir
- onmessage
- Mesaj alır
- start
- Kuyruğu başlatır
- close
- Portu kapatır