DM.Broadcast

La libreria permette di inviare messaggi in canali broadcast tra finestre della stessa origine.
Ad esempio abbiamo la possibilità di mettere in comunicazione una pagina con componenti di altre pagine aperte in altre finestre del browser, ed effettuare con l'ausilio di EZ operazioni sui nostri componenti.
È stata sviluppata sfruttando le API standard BroadcastChannel di JavaScript.

  • Invio di contenuti su canali, con la possibilità di definire eventi specifici ai quali registrarci
  • Possibilità di rimanere in ascolto su canali ed eventi specifici, con la possibilità di eseguire funzioni alla ricezione di un nuovo messaggio

Metodi

  • on
    Permette di iscrivere una funzione ad un evento.
    parametri
    • channelName: il nome del canale al quale iscriversi e rimanere in ascolto
    • callback: funzione Javascript da eseguire allo scaturirsi dell'evento.
    • options: oggetto javascript (opzionale)
      • eventName nome di un evento specifico al quale iscriversi. Ad esempio potrei connettermi al canale 'test' e al suo interno suddividere i messaggi in eventi diversi.
        Nota: è preferibile avere un canale con diversi eventi, piuttosto che tanti canali diversi. L'abuso di canali broadcast se non gestito correttamente può portare ad un memory leak.
  • off
    Permette di disiscrivere una funzione da un evento.
    parametri
    • channelName: il nome del canale interessato
    • callback: funzione Javascript che era stata iscritta.
    • options: oggetto javascript (opzionale)
      • eventName nome di un evento specifico al quale disiscriversi
  • postMessage
    Permette di inviare un messaggio broadcast al canale desiderato.
    parametri
    • channelName: il nome del canale interessato
    • eventName: nome di un evento specifico (opzionale)
    • message: contenuto della comunicazione
  • close
    Permette di chiudere per quella finestra un canale broadcast dato il suo nome.

Esempi

//esempio di invio messaggio broadcast nel canale 'test'. La connessione al canale è automatica
DM.Broadcast.postMessage('test', null, 'messaggio di prova');
//esempio di invio messaggio broadcast nel canale 'test', evento 'bicchiere'
DM.Broadcast.postMessage('test', 'bicchiere', 'ho un bicchiere');

//esempio di ascolto sul canale 'test'
DM.Broadcast.on('test', function(e) {
    console.log(e); //riceverà 'messaggio di prova'
});

//esempio di ascolto sul canale 'test', su evento 'bicchiere'
DM.Broadcast.on('test', (e) => console.log(e), { eventName: 'bicchiere' });