前端知多少

ShareWorker的使用说明(网上的这些都太不详细了,容易误

2020-01-19  本文已影响0人  AlphaEarth

官方并没有给出多个标签页共享线程的(明显)案例,所以会导致别人按照官网的代码写了,为什么没有推送到其他页面呢?经过自己反复测试,加上问了一些富有经验的同学,搞明白了,原因就是共享js没有存储客户端(标签页),接受到推送时候要向每个客户端都推送。

1.ShareWorker.js

var clients = [];
onconnect = function(e) {
    var port = e.ports[0];
    clients.push(port);
    port.addEventListener('message', function(e) {
        for (var i = 0; i < clients.length; i++) {
            var eElement = clients[i];
            eElement.postMessage(e.data)
        }
    });
    port.start();
}

2.在需要推送的页面里面添加开启共享线程的代码,

shareworker-message.js

myWorker = new SharedWorker("script/scenesetting/ShareWorker.js");
myWorker.port.onmessage=function(e) {
    var result=e.data;//此处就是共享现成推送过来的数据可以是字符串、数组、json
    /***********上面拿到数据后,就可以在下面做一些你想造做的事************/
};

3.引用第二步的shareworker-message.js文件

myWorker.port.postMessage(newData);
上一篇 下一篇

猜你喜欢

热点阅读