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

官方并没有给出多个标签页共享线程的(明显)案例,所以会导致别人按照官网的代码写了,为什么没有推送到其他页面呢?经过自己反复测试,加上问了一些富有经验的同学,搞明白了,原因就是共享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);
      

posted @ 2018-06-22 09:14  Forever.Sun  阅读(46)  评论(0)    收藏  举报