Nella mia esperienza personale con le estensioni di scrittura, tendo a usare sendMessage
per l'inizializzazione dello stato, e collegare per ogni momento che voglio inviare le cose più volte.
Ad esempio, le mie estensioni di solito dispongono di opzioni configurabili dall'utente e ho bisogno di un modo per inviare tali opzioni ai miei script di contenuto. Io uso sendMessage
e onMessage
per passare un oggetto JSON ai miei script di contenuto. Questo oggetto contiene le varie impostazioni controllate dall'utente e probabilmente anche altri stati.
Ho anche creato una piccola libreria che consente di definire scorciatoie da tastiera nella pagina di sfondo. Come funziona è semplice: uno script di contenuto viene iniettato in ogni pagina, che quindi ascolta gli eventi keydown
e keyup
.
Quando si verifica un evento, utilizza chrome.runtime.connect
per comunicare con la pagina di sfondo. Penso che questo sia un eccellente esempio di quando una connessione di lunga durata sarebbe più utile di molte chiamate sendMessage
.
Non penso che ci sia qualcosa che richiede che tu li usi in un modo o nell'altro ... potresti usare più sendMessage
o solo inviare un singolo messaggio con la connessione. Credo che sia più una questione di semantica e di scegliere quale strumento abbia più senso per il lavoro.
Ricorda inoltre che l'utilizzo della connessione semplifica l'archiviazione dello stato separato per ciascuna connessione, mentre potrebbe essere un po 'più difficile fare con sendMessage
.
quanto riguarda le prestazioni ... Onestamente non lo so, ma mi aspetto che almeno essere simili, vale a dire l'invio 5 sendMessage
sarebbe più o meno equivalente a inviare 5 messaggi con Connect. Tieni presente che sono asincroni, quindi i tempi possono variare a seconda delle circostanze.
per i futuri spettatori, credo che 'sendmessage' usi' chrome.runtime.connection', aprendo una porta, quindi chiudendo la porta dopo che il singolo messaggio è stato inviato, quindi in termini di prestazioni, dovrebbero essere identici. Prova 'console.log (sendResponse)'. –