Articles of web worker

如何通过npm包中的filepath引用资产? (应用程序:webworker)

我已经编写并发布了一个vanilla JS节点包,下面是package.json: { "name": "…", "description": "…", "version": "1.0.0", "types": "./index.d.ts", "main": "./dist/bundle.js", … } 我也使用webpack,以下webpack.config.js const path = require('path'); const WebpackShellPlugin = require('webpack-shell-plugin'); module.exports = { entry: './src/js/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js', library: '', libraryTarget: 'commonjs-module' }, plugins: [ new WebpackShellPlugin({onBuildStart:['rm -r dist', 'mkdir dist']}) ] }; 最后,我使用下面的方式在我的库中使用worker-loader: var MyWorker = […]

如何从node-webworker-threads中获得控制台的错误?

我正在开发一个node.js应用程序。 我正在使用webworker-threads包去掉一些CPU阻塞任务。 但是,我的线程代码中未被捕获的错误不会被发送到控制台。 相反,线程只是失败的默默。 最简单的例子说明了这一点: var Threads = require('webworker-threads'); this.testThread = new Threads.Worker( function() { console.log("This is the test thread. The next line should throw an error."); undefinedFunction(); } ); 由于我的实际应用程序正在调用一个单独的js文件作为线程,我也没有看到任何语法错误报告。 是否有一些无证的错误事件我应该赶上? 我的环境可能有问题吗?

当用“大”数据启动node.js中的webworker时,内存快速上升

我有典型的代码在节点中启动webworker: var Threads = require('webworker-threads'); var worker = new Threads.Worker(__dirname + '/workers/myworker.js'); worker.onmessage = function (event) { // 1. // … create and execute cypher query … }; // Start the worker. worker.postMessage({ 'data' : data }); 在1.我发送一小块处理的数据到一个Neo4J分贝。 对于小data这个工作非常好,但是当数据稍微变大时,工作人员就开始挣扎了。 我想要处理的实际data是一个csv,我用BabyParseparsing得到一个具有149000个属性的对象,每个属性有17个属性。 (149000行×17列= 2533000属性)。 该文件是17MB。 当做这个节点将分配大量的内存,并最终崩溃53%的内存分配。 机器有4GB。 工人看起来大致如下: self.onmessage = function (event) { process(event.data.data); }; function process(data) […]

如何在npm中要求()networking工作者?

我有一个npm / webpack设置,我的应用程序的一部分需要Web Workers。 通常情况下,networking工作人员使用以下语法创build: var worker = new Worker('path/to/external/js/file.js'); 在npm中,这不起作用,因为我正在使用的开发环境不接受这样的path。 必须使用require()来包含文件。 我不能只是链接到文件,因为这违反了交叉来源规则的事情。 是否有包含这些工作文件的策略?

在nodejs中执行CPU绑定任务的方法

我正在使用nodejs作为解码GET参数并以某种编码格式返回数据的Web服务器。 解码/编码是使用nodejs的encryption模块完成的,这似乎是同步的。 虽然服务单个请求所花的时间足够快,但阻止事件循环使服务在并发性方面performance不佳。 我的要求很简单,使事件循环之外的编码/解码function。 单独的进程(child_process或集群) 这可以是一个单独的过程,只是为了这个目的,但是由于编码/解码将在subprocess中被阻塞,这将停止subprocess接收新消息,即当两个string被编码为subprocess也将是单线程的。 为每个请求分开线程(threads-a-gogo或fiber或node-webworker) 为每个请求创build一个单独的线程来执行编码/解码操作,但是没有一个模块看起来像预期的那样工作,即threads-a-gogo不通过npm安装,光纤没有在运行时创build单独的线程(),node-webworker 不工作 。 有人遇到过类似的问题,或者有一些方法可以通过简单的消息传递轻松地在nodejs中创build线程。

使用cluster和node-webworker构build高性能的node.js应用程序

我不是一个node.js主,所以我想对此有更多的观点。 我正在创build一个HTTP node.js Web服务器,它不仅能处理大量的并发连接,还能处理长时间运行的作业。 默认情况下,node.js在一个进程上运行,如果有一段代码需要很长时间才能执行任何后续连接,则必须等到代码结束之前连接的操作。 例如: var http = require('http'); http.createServer(function (req, res) { doSomething(); // This takes a long time to execute // Return a response }).listen(1337, "127.0.0.1"); 所以我想使用node-webworker库在单独的线程中运行所有长时间运行的作业: var http = require('http'); var sys = require('sys'); var Worker = require('webworker'); http.createServer(function (req, res) { var w = new Worker('doSomething.js'); // This takes a […]

将Nodejs模块加载到Web Worker中

我打算在我的Node.js应用程序中使用web worker来执行一些并发任务。 然而,由于'webworker-threads'模块遵循HTML5 web worker的实现,因此在web worker内部需要使用像require("fs")这样的Nodejs模块不起作用。 importScripts()可以加载js文件,但我想在web工作者内部的一个function,以便我可以require安装npm模块。 有没有解决方法?

在NodeJS中处理长时间运行的进程?

我已经看到一些较旧的post涉及这个主题,但我想知道当前,现代的方法是什么。 这个用例是:(1)假设你想在一个video文件上做一个长时间运行的任务,比如60秒 ,说jspm install可能需要60秒。 (2)你不能细分任务。 其他要求包括: 需要知道任务何时完成 很高兴能够停止正在运行的任务 稳定性:如果一个任务死亡,它不会closures服务器 需要能够处理100个同时请求 我见过这些解决scheme: nodejssubprocess webworkers 光纤 – 不用于CPU绑定的任务 生成器 – 不用于CPU绑定的任务 https://adambom.github.io/parallel.js/ https://github.com/xk/node-threads-a-gogo 任何其他? 现代的,基于标准的方法是什么? 而且,如果nodejs不适合这种types的任务,那么这也是一个有效的答案。

在WebWorker(NWJS)中不能要求节点模块

我正在尝试做一些我认为很简单的事情。 我正在使用nwjs(以前称为Node-Webkit),如果您不知道,基本上意味着我正在开发一个使用Chromium&Node的桌面应用程序,其中DOM与Node的范围相同。 我想将工作卸载到webworker,以便在将文本发送到Ivona Cloud(使用ivona-node)文本到语音API时,GUI不会挂起。 audio在生成时会以块的forms返回,并被写入MP3。 ivona-node使用fs将mp3写入驱动器。 我得到它在dom工作,但webworkers需要不挂用户界面。 所以我有两个节点模块,我需要在webworker,ivona-node和fs中使用。 问题是在webworker中你不能使用require。 所以我试着用browserify打包ivona-node和fs(这里有一个名为browserify-fs的包,我用这个包),用importScripts()replacerequire。 现在我得到节点模块中的var错误。 注意:我不认为native_fs_的方法会将mp3写入磁盘(stream),因为它应该是这样,我也得到了Ivona包中的错误(实际上是最重要的)不知道如何解决。 我包括所有信息来重现这一点。 这是我在控制台中得到的错误:未捕获的SyntaxError:意外的令牌var VM39 ivonabundle.js:23132 在NWJS中重现的步骤: npm安装ivona-node npm安装browserify-fs npm install -g browserify 现在,我浏览了针对browserify-fs的ivona-node和index.js的main.js: browserify main.js> ivonabundle.js browserify index.js> fsbundle.js 的package.json … { "name": "appname", "description": "appdescr", "title": "apptitle", "main": "index.html", "window": { "toolbar": true, "resizable": false, "width": 800, "height": 500 }, "webkit": { "plugin": […]

Webworker线程:是否可以使用内部工人“要求”?

(使用Sails.js) 我正在为Node上长时间运行的进程testingwebworker-threads( https://www.npmjs.com/package/webworker-threads ),下面的例子看起来不错: var Worker = require('webworker-threads').Worker; var fibo = new Worker(function() { function fibo (n) { return n > 1 ? fibo(n – 1) + fibo(n – 2) : 1; } this.onmessage = function (event) { try{ postMessage(fibo(event.data)); }catch (e){ console.log(e); } } }); fibo.onmessage = function (event) { //my return callback }; […]