Skip to content

Instantly share code, notes, and snippets.

@tlrobinson
Created March 4, 2015 20:03
Show Gist options
  • Save tlrobinson/730eee83dc135993810d to your computer and use it in GitHub Desktop.
Save tlrobinson/730eee83dc135993810d to your computer and use it in GitHub Desktop.
node-webworker-threads + workerstream + browserify + babel
import ParentStream from "workerstream/parent";
global.stream = ParentStream();
import { Worker } from "webworker-threads";
import WorkerStream from "workerstream";
import browserify from "browserify";
import babelify from "babelify";
import Promise from "bluebird";
function bufferStream(stream) {
return new Promise(function (resolve) {
let buffer = "";
stream.on("data", (data) => buffer += data.toString());
stream.on("end", () => resolve(buffer));
});
}
function browserifyWorker(moduleName) {
let stream = browserify()
.transform(babelify)
.add("./boilerplate.es6")
.add(moduleName)
.bundle();
return bufferStream(stream);
}
function startWorker(moduleName) {
return browserifyWorker(moduleName).then(function(compiled) {
let func = new Function(compiled);
return WorkerStream(new Worker(func));
});
}
startWorker("./worker.es6").then(function(stream) {
stream.on("data", (data) => console.log("worker sent:", data));
setInterval(() => stream.write("ping"), 500);
});
stream.on("data", (data) => { stream.write("pong"); });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment