标签: web-worker

使WebWorkers成为一个安全的环境

为了有一个能够在浏览器中运行任意javascript代码的接口,而没有像典型的妈妈玩笑那么大的安全漏洞,Esailija建议使用Web Workers.它们在半沙盒环境中运行(没有DOM访问并且已经在浏览器中)并且可以被杀死,因此用户无法将它们置于无限循环中.

以下是他提出的例子:http://tuohiniemi.fi/~runeli/petka/workertest.html(打开你的控制台)

jsfiddle(仅限谷歌浏览器)

现在,这似乎是一个很好的解决方案; 然而,它是完整的(或接近完整的)吗?有什么明显缺失的吗?

整个事情(因为它连接到机器人)可以在github上找到:worker,evaluationator

主要:

workercode = "worker.js";

function makeWorkerExecuteSomeCode( code, callback ) {
    var timeout;

    code = code + "";
    var worker = new Worker( workercode );

    worker.addEventListener( "message", function(event) {
        clearTimeout(timeout);
        callback( event.data );
    });

    worker.postMessage({
        code: code
    });

    timeout = window.setTimeout( function() {
        callback( "Maximum execution time exceeded" );
        worker.terminate();
    }, 1000 );
}

makeWorkerExecuteSomeCode( '5 + 5', function(answer){
    console.log( answer ); …
Run Code Online (Sandbox Code Playgroud)

javascript web-worker

66
推荐指数
2
解决办法
3429
查看次数

从webWorker访问localStorage

WebWorker可以访问localStorage吗?

如果不是为什么不呢?从安全角度来看,这有问题吗?

javascript html5 web-worker local-storage

57
推荐指数
3
解决办法
3万
查看次数

由于JavaScript是单线程的,HTML5中的Web worker如何进行多线程处理?

我一直在阅读HTML5中的Web worker,但我知道JavaScript是单线程的.

我的问题是:

那么Web工作者如何进行多线程工作呢?或者如果它不是真正的多线程,它们如何模拟呢?在这里我似乎并不清楚.

javascript html5 web-worker

56
推荐指数
3
解决办法
1万
查看次数

获取JavaScript中的CPU核心数量?

有没有办法确定JavaScript中可用的CPU核心数量,以便您可以根据具体情况调整Web工作者的数量?

javascript cpu-cores web-worker

54
推荐指数
4
解决办法
1万
查看次数

将对象传递给Web worker

我正在尝试通过postMessage函数将对象传递给Web worker.
这个对象是一个正方形,有一些功能可以在画布上绘制自己和其他一些东西.Web worker必须返回此对象的数组.
问题是当我用这个对象调用postMessage函数时,我收到一个错误:

Uncaught Error: DATA_CLONE_ERR: DOM Exception 25
Run Code Online (Sandbox Code Playgroud)

我得到这个将对象发送给工人,反之亦然.
我认为错误是因为javascript必须序列化对象,但不能这样做因为对象具有内置函数.

有没有人遇到过类似的问题?你知道这方面的一些工作吗?
提前致谢.

javascript web-worker

52
推荐指数
5
解决办法
4万
查看次数

51
推荐指数
4
解决办法
2万
查看次数

有没有办法在Web Worker中创建DOM元素?

上下文: 我有一个处理和显示大量日志文件的Web应用程序.它们通常只有大约10万行,但它可以达到400万行或更多.为了能够滚动浏览该日志文件(用户启动和通过JavaScript)并过滤具有良好性能的行,我会在数据到达时为每一行创建一个DOM元素(通过ajax以JSON形式).我发现这对性能更好,然后在后端构建HTML.然后我将元素保存在一个数组中,我只显示可见的行.

对于最大100k行,这只需要几秒钟,但对于500k行(不包括下载),任何更多需要花费一分钟.我想进一步提高性能,所以我尝试使用HTML5 Web Workers.现在的问题是我无法在Web Worker中创建元素,甚至不能在DOM之外创建元素.所以我最终只在Web Workers中进行了json到HTML的转换,并将结果发送到主线程.它在那里创建并存储在一个数组中.不幸的是,这使性能恶化,现在需要至少30秒.

问题:在Web工作者中,在DOM树之外创建DOM元素是否有任何我不知道的方法?如果没有,为什么不呢?在我看来,这不会产生并发问题,因为创建元素可以并行发生而没有问题.

javascript jquery html5 web-worker

41
推荐指数
2
解决办法
2万
查看次数

Web Workers处理AJAX调用 - 优化过度杀伤?

我正在使用一个代码来处理使用Web Workers的所有AJAX请求(如果可用).这些工作人员几乎只做XMLHttpRequest对象处理(没有额外的计算).工作人员创建的所有请求都是异步的(request.open("get",url,true)).

最近,我遇到了关于这段代码的几个问题,我开始怀疑是否应该花时间修复这个或者只是转储整个解决方案.

到目前为止,我的研究表明,此代码实际上可能会损害性能.但是,我无法找到支持这一点的任何可信来源.我的两个发现是:

  • 2年的jQuery功能建议使用Web worker进行AJAX调用
  • 这个问题似乎有点不同(在Web worker和AJAX调用中使用同步请求)

有人能指出我讨论这个问题的可靠来源吗?或者,是否有任何基准可以消除我的疑虑?

[ 编辑 ]当WebWorker也负责解析结果(JSON.parse)时,这个问题会变得更有趣.异步解析是否提高了性能?

javascript ajax asynchronous web-worker

41
推荐指数
3
解决办法
1万
查看次数

40
推荐指数
2
解决办法
1万
查看次数

HTML Web Worker和Jquery Ajax调用

我想知道我是否可以在web worker文件中使用jQuery.谷歌浏览器给了我这个错误:"未捕获的ReferenceError:$未定义".

这是代码:父文件:

var loader = new Worker(BASE_URL + "js/rss_loader_worker.js");
// Ask the worker to start loading the RSS from the server
loader.postMessage("loadRss");
// When receive the response from the server
loader.onmessage = function (event) {
  console.log(event.data);
}
Run Code Online (Sandbox Code Playgroud)

工人档案:

onmessage = function (event) {
  if (event.data === "loadRss") {
    loadRss();
  }
}

/**
 * This function handles the AJAX request to the server side
 * then pass the content to the view page
 * @param none
 * @return html text …
Run Code Online (Sandbox Code Playgroud)

ajax jquery html5 web-worker

40
推荐指数
2
解决办法
4万
查看次数