Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 88 di 112
  • livello avanzato
Indice lezioni

Shared Worker

Gli Shared Worker possono comunicare con tutti gli script che condividono la stessa origine, cioè tutti gli script appartenenti ad uno stesso dominio/app.
Gli Shared Worker possono comunicare con tutti gli script che condividono la stessa origine, cioè tutti gli script appartenenti ad uno stesso dominio/app.
Link copiato negli appunti

Oltre ai Web Worker che abbiamo analizzato, le specifiche prevedono un altro tipo di worker: gli Shared Worker.

I worker che abbiamo visto finora, detti anche Dedicated Worker, hanno una relazione diretta con il thread e/o lo script che li hanno generati, cioè con essi può interagire soltanto il thread che li ha generati. Gli Shared Worker, invece, possono comunicare con tutti gli script che condividono la stessa origine, cioè tutti gli script appartenenti ad uno stesso sito o applicazione Web.

Esaminiamo questo elemento con dei semplici esempi. Per creare uno Shared Worker utilizziamo il costruttore SharedWorker():

var myWorker = new SharedWorker("worker.js");

L'interazione del thread principale con il worker condiviso avviene tramite una porta di comunicazione dedicata accessibile tramite la proprietà port:

myWorker.port.postMessage("start");
myWorker.port.onmessage = function(event) { ... };

Analogamente, dal lato worker è possibile comunicare con il thread principale tramite l'evento connect, che si verifica al momento della creazione dell'istanza del worker:

self.addEventListener("connect", function(event) {
	var clientPort = event.source;
	clientPort.onmessage = function(event) {
		var dati = event.data;
		//elaborazione di dati
		clientPort.postMessage("Dati elaborati");
	};
});

Come possiamo vedere dall'esempio, l'oggetto event mette a disposizione la proprietà source che rappresenta la porta tramite cui comunicare con il thread principale.

Gli Shared Worker rappresentano una evoluzione dei worker dedicati e, se ben utilizzati, possono contribuire ad un migliore utilizzo delle risorse. Possono, ad esempio, essere impiegati in quelle situazioni in cui si ha necessità di condividere una determinata elaborazione o per mantenere uno stato condiviso tra pagine Web diverse.

Ti consigliamo anche