2011-07-05 39 views
1

从我所了解的情况来看,HTML5的共享网络工作者的最大好处是他们可以在一个单独的执行线程中接受多个连接。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吗?

更新:演示现在工作。

+0

只是一个建议..网络工作者是一种新技术..你应该是金丝雀或至少测试版。不知道你的问题:(也许它还没有达到稳定呢? – Achshar

+0

这是一个共享Web工作者与多个连接演示http://www.antkorp.in/sharedworkers/ –

回答

2

你有2个监听者给工作人员,但你只启动一次工人,所以它是1个工作人员由1个所有者共享,而不是2个所有者。增加听众的数量不会影响所有权。

您可以在这里看到的例子: http://weblog.bocoup.com/javascript-web-workers-chrome-5-supports-new-sharedworker

它有2帧,一个包含iframe和一个iframe内。他们都称工人的start方法,所以它由2个所有者共享。由于start方法被调用了两次,onconnect事件应该被解雇的两倍,从而使connection.count等于2.

+0

谢谢。看来有必要创建一个新的SharedWorker实例为每个连接(尽管这不符合W3C的例子:http://www.w3.org/TR/2009/WD-workers-20091029/#shared-workers)。我已经更新了我的演示,它的工作原理 –

0

在共享webworkers上下文是活到最后的浏览器会话结束。共享的webworkers可以维护浏览器选项卡上下文。他们用相同的数据背景来回应请求。

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

这是一个演示共享网络工作者与多个连接。

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

+0

你的链接已经死了,你能更新吗? – Wilt