从专用工作者访问共享工作者

时间:2014-06-11 21:28:26

标签: javascript web-worker

是否可以访问由同一主线程创建的专用工作线程中的主线程中创建的共享工作线程?我最初的想法是没有,因为这可能导致很多并发问题,但我还没有完全理解WebWorkers的内部尚未明确决定。

我的用例是让专职工作人员与服务器一起打开一个Web套接字通道来检索流数据源。然后将该数据发送到共享工作器,该工作器将提供操作它的功能并通过可传输对象返回结果。我不希望将这些对象组合到一个工作器中,因为我希望能够插入不同的模块来进行数据操作,并且不希望复制代码以与Web套接字进行通信。

1 个答案:

答案 0 :(得分:1)

  

是否可以访问由同一主线程创建的专用工作线程中的主线程中创建的共享工作线程?

是。只需创建一个SharedWorker作为子工作者(它将被共享),或者在共享工作者和专用工作者之间创建create a MessageChannel

  

这可能会导致很多并发问题

没有。工人间沟通是异步和异步的。

  

然后,这些数据将被发送到共享工作者,该工作人员将提供操作

的功能

听起来好像你需要一个共享工作者。对于“提供功能”,加载到专用工作者(执行websocket通信)的简单库就足够了。您甚至可以使用worker中的一些依赖关系管理动态地动态加载库。无需复制Web套接字代码。