From 1e78bcb13795f706b0e21f94e6a3b3091ca61b48 Mon Sep 17 00:00:00 2001 From: Amanda Ghassaei <amandaghassaei@gmail.com> Date: Mon, 12 Jan 2015 13:39:08 -0500 Subject: [PATCH] web workers working locally --- js/main.js | 2 +- js/persistantWorkers.js | 32 -------------------------------- js/persistentWorkers.js | 30 ++++++++++++++++++++++++++++++ js/worker.js | 31 +++++++++++++++++-------------- main.html | 3 ++- 5 files changed, 50 insertions(+), 48 deletions(-) delete mode 100644 js/persistantWorkers.js create mode 100644 js/persistentWorkers.js diff --git a/js/main.js b/js/main.js index d71f8169..60bbb019 100644 --- a/js/main.js +++ b/js/main.js @@ -7,6 +7,6 @@ $(function(){ three = Three(); setupNavBar(); - workers = makeWorkers(); + makeWorkers(4); }); diff --git a/js/persistantWorkers.js b/js/persistantWorkers.js deleted file mode 100644 index 046acac5..00000000 --- a/js/persistantWorkers.js +++ /dev/null @@ -1,32 +0,0 @@ -//global workers so they do not have to be reinstantiated - - -function browserSupportsWebWorkers() { - return typeof window.Worker === "function"; -} - -function makeWorkers(){ - - function makeBlobURL(myWorkerFunction) { - var URL = window.URL || window.webkitURL; - var blob = new Blob([myWorkerFunction.toString()], { type: "text/javascript" }); - return URL.createObjectURL(blob); - } - - function workerFunction(){ -// var isNode = typeof module !== 'undefined' && module.exports; -// -// if (isNode) { -// process.once('message', function (code) { -// eval(JSON.parse(code).data); -// }); -// } else { - console.log("eval"); - self.onmessage = function (code) { - console.log(code); - eval(code.data); - }; -// } - } -// return new Parallel(null, {env:null, evalPath: "dependencies/eval.js"}).require('three.js'); -} \ No newline at end of file diff --git a/js/persistentWorkers.js b/js/persistentWorkers.js new file mode 100644 index 00000000..343b8d60 --- /dev/null +++ b/js/persistentWorkers.js @@ -0,0 +1,30 @@ +//global workers so they do not have to be reinstantiated + + +function browserSupportsWebWorkers() { + return typeof window.Worker === "function"; +} + +function makeWorkers(numWorkers){ + + var allWorkers = []; + var URL = window.URL || window.webkitURL; + var workerURL = makeBlobURL(URL, myWorker); + for (var i=0;i<numWorkers;i++){ + var worker = new Worker(workerURL); + worker.postMessage([i,4]); + + worker.onmessage = function(e) { + console.log(e.data); + }; + allWorkers.push(worker); + } + URL.revokeObjectURL(workerURL); + + + function makeBlobURL(URL, someFunction) { + var blob = new Blob(["(" + someFunction.toString() + ")()"], { type: "text/javascript" }); + return URL.createObjectURL(blob); + } + +} \ No newline at end of file diff --git a/js/worker.js b/js/worker.js index 211e20ce..fb1d5599 100644 --- a/js/worker.js +++ b/js/worker.js @@ -2,20 +2,23 @@ * Created by aghassaei on 1/12/15. */ +function myWorker(){ + self.onmessage = function(e) { + var data = e.data; -self.onmessage = function(e) { - var data = e.data; + if (data.url) { + var url = data.url.href; + var index = url.indexOf('main.html');//url of landing page + if (index != -1) { + url = url.substring(0, index); + } + //load all scripts + // importScripts(url + 'dependencies/three.js'); + // importScripts(url + 'js/element.js'); + } - if (data.url) { - var url = data.url.href; - var index = url.indexOf('main.html');//url of landing page - if (index != -1) { - url = url.substring(0, index); - } - //load all scripts - importScripts(url + 'dependencies/three.js'); -// importScripts(url + 'js/element.js'); - } + var workerResult = 'Result: ' + (e.data[0] * e.data[1]); + postMessage(workerResult); - -}; \ No newline at end of file + }; +} diff --git a/main.html b/main.html index daf0a6ce..dbb6ef67 100644 --- a/main.html +++ b/main.html @@ -32,7 +32,8 @@ <!--multi-threading--> <script src="dependencies/parallel.js"></script> - <script src="js/persistantWorkers.js"></script><!--global workers--> + <script src="js/worker.js"></script> + <script src="js/persistentWorkers.js"></script><!--global workers--> <script src="js/main.js"></script> <script src="dependencies/loaders/STLLoader.js"></script> -- GitLab