私は実際にこれに対する答えを見つけるためにいくつかのテストを行っています。
FirefoxはWebワーカーからのWebSocket接続の作成をまだサポートしていません:https://bugzilla.mozilla.org/show_bug.cgi?id=504553 Firefoxはそのバグが解決されるまで関連性がありません。
IE 10にはsupport for Shared Web Workersが含まれていないため、関連性もありません。だからクロムは去る。
共有Webワーカーをテストする例です。
まず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>
そしてshared.js
で共有ワーカー自身の実装:クロム20で
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);
試験結果(答え):
ページは2つの別々のタブに同時にロードされ、接続数はページの1つごとに増加しますまたは自己参照のリンクがクリックされた場合
ページのインスタンスが1つだけロードされている場合、ページがリロードされるかリンクがクリックされたときに接続カウントが変更されることはありません。
Chromeの場合20:共有Webワーカーは、ページの再読み込みとリンクのナビゲーションのクリックで持続しません。
現在、ストレージイベントはその共有労働者のための最良の選択肢です。 http://stackoverflow.com/questions/19125823/how-is-it-possible-to-share-single-js-resource - between-browser-tabs/19165781#19165781 – inf3rno