Passing typed arrays and array buffers

by Darker

HTML

<h1>
Passing typed arrays and array buffers.
</h1>

JavaScript

function workerFN() {
  self.onmessage = function(e) {
    switch(e.data.name) {
      case "buffer" : 
          console.log("Array buffer:", new Float64Array(e.data.data))
      break;
      case "array": 
          console.log("Array:", e.data.data);
          break;
      default:
        console.error("Unknown message:", e.data.name);
    }
  }
}
// This is a trick to generate real worker script that is loaded from server
var url = "/echo/js/?js="+encodeURIComponent("("+workerFN.toString()+")()");
// THE CONSTRUCTOR OVERRID


var worker = new Worker(url);

worker.addEventListener("error", function(e) {
    console.warn("Worker error:", e);
});
worker.addEventListener("messageerror", function(e) {
    console.warn("Message error:", e);
});

var arrayBuffer = new Float64Array([1,2,3,4,5]).buffer;
var array = new Float64Array([1,2,3,4,5])
worker.postMessage({name:"buffer", data:arrayBuffer}, [arrayBuffer]);
worker.postMessage({name:"array", data:array}, [array.buffer]);
console.log("Buffer sent:", arrayBuffer);
console.log("Array sent:", array, "The internal buffer is now empty:", array.buffer)