1

据我了解,HTML5 共享网络工作者的最大好处是它们可以在一个单独的执行线程中接受多个连接。

我的问题是:是否有人与 SharedWorker 建立了多个连接以与 Google Chrome 一起作为单线程工作?我正在使用最新版本 12.0.742.112。

演示:http ://demos.zulius.com/html5/sharedworker

来源(以防演示关闭):index.htmlsharedworker.js

该演示建立了 2 个独立的事件侦听器。预期的输出是:

foo got message: Hello World! You are connection #1
bar got message: Hello World! You are connection #2

在演示中,两个事件侦听器都正确触发,但 SharedWorker 脚本中未维护连接计数变量。这使我相信与 SharedWorker 的每个连接都在单独的线程中执行。

难道我做错了什么?还是 Chrome 对 SharedWorker 的支持不完全存在?

更新:演示现在可以工作了。

4

2 回答 2

2

您有 2 个 Worker 的侦听器,但您只启动 Worker 一次,因此它是 1 个 Worker 由 1 个所有者共享,而不是 2 个所有者。增加侦听器的数量不会影响所有权。

您可以在此处查看示例: http ://weblog.bocoup.com/javascript-web-workers-chrome-5-supports-new-sharedworker

它有 2 个框架,一个包含 iframe,一个包含 iframe。他们都调用了startWorker 的方法,因此它由 2 个所有者共享。由于该start方法被调用了两次,onconnect事件应该被触发两次,因此connection.count等于 2。

于 2011-07-06T03:52:03.170 回答
0

在共享网络工作者中,上下文一直存在,直到最后一个浏览器会话结束。共享网络工作者可以维护浏览器选项卡周围的上下文。它们使用相同的数据上下文响应请求。

数据上下文的变化将影响所有连接,您可以通过单个上下文更改更新所有连接,您可以将数据保持到最后一个连接结束。您可以在所有视图中维护连接更改。

这是具有多个连接的共享网络工作者的演示。

http://www.antkorp.in/sharedworkers/

于 2013-01-18T12:28:01.787 回答