使用sharedWorker在web页面之间通信

参考

https://developer.mozilla.org...

目标

在不使用webSocket和轮询的情况下,实现页面之间的实时通信

SharedWorked如何使用

使用SharedWorked可以创建一个多页面共享的进程,通过这种方式来实现多页面之间的消息互通

  1. 先创建'worker.js'文件,写入代码
    var portList = [];
    onconnect = function(e) {
        var port = e.ports[0];  
        portList.push(port); 
        console.log(port)    
        port.onmessage = function(e) {
            var workerResult = e.data;
            portList.map(item=>{            
                // item!=port&&item.postMessage(workerResult);  /**不发给自己 */
                item.postMessage(workerResult);                 /**发给自己 */
            });        
        }
    
    }

这个文件在页面中会被引用,用来创建一个共享进程对象。代码中维护了一个连接对象池,定义了简单的事件和方法。

  1. 新建一个web页面引用'worker.js',定义一些简单的事件和方法
    


    
    
    
    Document


    
  1. 重复步骤2,可以再创建一个或多个页面
  2. 由于SharedWorker遵循同源策略,所以你要启动一个简单的web服务才可以正常运行

另外我还画了一个简单的模型图,希望能帮助你加深理解

你可能感兴趣的:(javascript)