您可以嘗試在Shared WebWorker中創建WebSocket連接,該連接允許來自同一個域的多個頁面共享執行上下文。但是,目前還不清楚共享工作者是否在整個頁面上持續重新加載或替換:Do Shared Web Workers persist across a single page reload, link navigation
另外,共享Web工作人員目前有limited browser support(webkit和Opera)。
更新:
由於單個共享網絡工作者可以用於多個頁面,執行要稍微複雜一些,正常的網絡工作者。
下面是一個使用的WebSockets和可之間共享的共享網絡工作者例如
首先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>
實現在shared.js
共享工人的使用Javascript:
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中有效。
我不這麼認爲。但是您的應用程序邏輯應該涵蓋連接問題 –