使用 GWT 的 Web Worker

Posted

技术标签:

【中文标题】使用 GWT 的 Web Worker【英文标题】:Web-Worker with GWT 【发布时间】:2011-11-09 04:13:58 【问题描述】:

使用 GWT 模块加载 Web-Worker 线程的最简单方法是什么?

我不是指在 GWT 中获得对 Web-Worker 的支持(有相关的库),而是如何生成 GWT 模块以加载到 Web-Worker 中?

我怀疑我需要一个特殊的链接器 - 是否有可用的链接器?

【问题讨论】:

【参考方案1】:

看看http://code.google.com/p/speedtracer/source/browse/trunk/src/client/ui/src/com/google/gwt/webworker/ 我没有深入挖掘,但它似乎是您正在寻找的“特殊链接器”(链接器随后用于 SpeedTracer 的“提示引擎”和“中断”模块)

【讨论】:

【参考方案2】:

有一个名为 gwt-ns 的库,其中包含 web worker。 以下链接是使用它的示例。 http://extremelysatisfactorytotalitarianism.com/blog/?p=645

更新 gwt-ns 的作者发贴说他从 2010 年就停止了开发,所以它与最近的 GWT(比如 2.6.1 或更高版本)不兼容

注意(2014 年 2 月 4 日):自 2010 年 6 月以来,gwt-ns 没有被触及 我的理解是 Web Worker 支持不起作用 任何最新版本的 GWT。这在某种程度上是意料之中的,因为它必须 深入到 GWT 编译器才能工作,并且必须 随着编译器设计的改变而做出改变。 其他模块也可能已过时,因为这些功能的排列选择需要随着浏览器的添加而调整 支持或将支持从前缀移动到完整。有些事情可能仍然 意外工作。 随意使用代码,但请注意。我不再做任何 GWT 开发,所以如果你想让工人工作 再次以 gwt-ns 为基础,您需要分叉代码并启动 新项目(幸运的是 Apache 2.0 许可证让您轻松完成)。

【讨论】:

很遗憾,gwt-ns 项目只兼容 GWT 2.0-2.2【参考方案3】:

你可以试试我在 GitHub 上发布的 gwtwwlinker 项目:https://github.com/tomekziel/gwtwwlinker

它允许您将单独的模块编译为 web worker,专用链接器消除了通常的 $wnd$doc 依赖项。

【讨论】:

【参考方案4】:

Manfred Tremmel 已从 Google Speedtest 应用程序中获取核心代码,并将其放入单独的存储库 gwt-webworker。我在SimpleWebWorker 添加了一个非常简单的示例代码。此代码适用于最新的 2.8.1 版本的 GWT。

【讨论】:

以上是关于使用 GWT 的 Web Worker的主要内容,如果未能解决你的问题,请参考以下文章

Google Web Toolkit (GWT) EventBus 事件触发/处理

Google Web Toolkit (GWT) 离线文档

如何将现有的 eclipse GWT 项目转换为动态 Web 项目?

在 Google Web Toolkit (GWT) 中实现页眉、页脚和菜单栏

如何在 GWT Web 应用程序中正确实现 DAO?

GWT RPC 警告:servlet 有映射,但 web.xml 没有对应的映射