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