CodeBlanks Logo Icon CodeBlanks

MessageChannel

JavaScript kursu · Uzman · Ders 17/63

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

  1. 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.

  2. port1 üzerinde dinleme

    channel.port1.____= (event) => console.log(event.data);
    Cevabı göster
    channel.port1.onmessage= (event) => console.log(event.data);
  3. MessagePort metotlarını eşleştir

    postMessage
    Mesaj gönderir
    onmessage
    Mesaj alır
    start
    Kuyruğu başlatır
    close
    Portu kapatır

Uzman bölümündeki tüm dersler