【问题标题】:HTML5: shared web worker with multiple connectionsHTML5:具有多个连接的共享网络工作者
【发布时间】:2011-07-05 21:00:26
【问题描述】:

据我了解,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 的支持不完全存在?

更新:演示现在可以运行了。

【问题讨论】:

  • 只是一个建议.. 网络工作者是一项新技术.. 你应该在金丝雀或至少 beta 频道。不知道你的问题:(也许还没有稳定?
  • 这是一个具有多个连接的共享网络工作者的演示。 antkorp.in/sharedworkers

标签: html connection web-worker


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多