首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从工作小程序内部访问全局/窗口范围?(javascript前端)

如何从工作小程序内部访问全局/窗口范围?(javascript前端)
EN

Stack Overflow用户
提问于 2021-01-14 18:15:04
回答 1查看 227关注 0票数 0

我创建了一个AudioWorkletProcessor,并像这样激活它:

代码语言:javascript
复制
audioCtx = new AudioContext();
await audioCtx.audioWorklet.addModule('testworklet.js');
mysource = new AudioWorkletNode(audioCtx, 'testworklet');
mysource.connect(audioCtx.destination);

在testworklet.js中我定义了

代码语言:javascript
复制
class TestWorklet extends AudioWorkletProcessor {    
    constructor(options){
        super(options);
        this.s = WebSocket('wss://localhost') // ERROR: WebSocket is undefined!
    }
    process(inputs, outputs) {
        return true;
    }
}

但是这段代码不能访问WebSocket,因为WebSocket在"window“作用域中,而代码在AudioWorkletGlobalScope下运行。

如何使用javascript?

EN

回答 1

Stack Overflow用户

发布于 2021-01-14 19:03:46

这就是解决方案:你不需要。

documentation的更深入的研究揭示了端口的属性:MessagePort允许在处理器和Worklet本身之间发送消息。因为处理器不能访问任何东西,所以我扩展了工作小程序来执行i/o工作,并将数据发送给处理器。代码如下:

在工作小程序(主脚本)中,我可以访问所有内容。我获得数据并通过端口将其发送给工作程序

代码语言:javascript
复制
        class MyWorkletNode extends AudioWorkletNode{
            constructor(){
                super(audioCtx, 'testprocessor');
                var p = this.port;
                socket.on('audio_data', function(msg){
                    p.postMessage(msg['data']);
                });
            }
        }
        audioCtx = new AudioContext();
        await audioCtx.audioWorklet.addModule('testprocessor.js');
        mysource = new AudioWorkletNode(audioCtx, 'testprocessor');
        mysource.connect(audioCtx.destination);

在处理器中,我只是通过端口(而不是直接)接收来自工作小程序的数据:

代码语言:javascript
复制
      class TestProcessor extends AudioWorkletProcessor {    
          constructor(options){
            super();
            this.port.addEventListener('message', (event) => {
              this.ondata(event);
            } );
            this.port.start()
          }

注意:我将之前不准确的名称testworklet.js更改为testprocessor.js

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65717051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档