同じドメインの複数のページが実行コンテキストを共有できるようにする Shared WebWorker で WebSocket 接続を作成してみてください。ただし、Shared Workersがページのリロードまたは置換後も持続するかどうかは不明です。
また、Shared WebWorkers は現在、ブラウザーのサポート (Webkit と Opera) が制限されています。
更新:
1 つの共有 Web ワーカーで複数のページを処理できるため、実装は通常の Web ワーカーよりも少し複雑になります。
以下は、WebSocket を使用して共有できる共有 Web ワーカーの例です。
最初の HTML:
<!DOCTYPE html>
<html>
<body>
<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>
で共有ワーカーを実装する Javascript shared.js
:
var ws = null
var url = "ws://" + location.hostname + ":6080"
self.addEventListener("connect", function(e) {
var port = e.ports[0]
port.addEventListener("message", function(e) {
if (e.data === "start") {
if (ws === null) {
ws = new WebSocket(url);
port.postMessage("started connection to " + url);
} else {
port.postMessage("reusing connection to " + url);
}
}
}, false);
port.start();
}, false);
これが Chrome 52 で動作することを確認しました。