me han hecho algunas pruebas para averiguar la respuesta a esto en la práctica.
Firefox aún no admite la creación de conexiones WebSocket desde Web Workers: https://bugzilla.mozilla.org/show_bug.cgi?id=504553 Por lo tanto, Firefox no es relevante hasta que se resuelva el error.
IE 10 no tiene support for Shared Web Workers por lo que no es relevante tampoco. Entonces eso deja a Chrome.
Aquí se muestra un ejemplo para probar los trabajadores web compartidos.
En primer lugar el código HTML:
<!DOCTYPE html>
<html>
<body>
<a href="shared.html">reload page</a>
<script>
var worker = new SharedWorker("shared.js");
worker.port.addEventListener("message", function(e) {
console.log("Got message: " + e.data);
}, false);
worker.port.start();
worker.port.postMessage("start");
</script>
</body>
</html>
A continuación, la aplicación del trabajador compartida sí en shared.js
:
var connections = 0;
self.addEventListener("connect", function(e) {
var port = e.ports[0];
connections ++;
port.addEventListener("message", function(e) {
if (e.data === "start") {
var ws = new WebSocket("ws://localhost:6080");
port.postMessage("started connection: " + connections);
}
}, false);
port.start();
}, false);
resultados de las pruebas en Chrome 20 (la respuesta):
Cuando la página se carga simultáneamente en dos pestañas separadas, el recuento de conexiones crece cada vez que una de las páginas se recarga o se hace clic en el enlace autorreferente.
Si solo se carga una instancia de la página, el recuento de conexiones nunca cambia cuando la página se vuelve a cargar o se hace clic en el enlace.
Por lo tanto, en Chrome 20: Los trabajadores web compartidos no persisten en las recargas de página y los clics de navegación de enlace.
Actualmente, el evento de almacenamiento es su mejor opción para eso, los trabajadores compartidos quizás más tarde ... http://stackoverflow.com/questions/19125823/how-is-it-possible-to-share-single-js-resource -between-browser-tabs/19165781 # 19165781 – inf3rno