为什么共享工作人员在重新加载页面时死机?它一定是复活了。我该如何解决这个问题?
var port = new SharedWorker('/app/worker-5n1261e73b.js').port;
port.onmessage = function(e){
console.log(e.data);
};
port.start();
onconnect = function(e){
var port = e.ports[0];
port.onmessage = function(e){
console.log(e.data);
};
port.start();
port.postMessage('Connected');
};
答案 0 :(得分:1)
当页面重新加载时,javascript 会再次执行,创建与 SharedWorker 的连接的代码也是如此。
您的 Sharedworker 中的 onconnect()
事件处理程序不知道该选项卡是重新加载还是一个全新的选项卡,因此它只是将该选项卡注册为新的连接端口,从而停止与上一个选项卡端口(如果页面已重新加载)。换句话说,重新加载的页面为 Sharedworker 获得了一个新的端口号。
如果您当时只打开了一个选项卡,那么在重新加载页面时肯定会停止并重新创建 Sharedworker,但是如果您当时打开了多个页面,则 Sharedworker 不会因为另一个而停止工作实时连接。