Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML 5 webworkers with multiple arguments

I just got into HTML5 webworkers and now I want to pass multiple arguments to my worker.

I have this in my page:

var username = document.getElementById("username").value;
var server_url = 'localhost';
w.postMessage(username,server_url);

and this in my worker:

var username = '';
var server_url = '';

onmessage = function (e,f) {
    username = e.data;
    server_url = f.data;
}
console.log(username);
console.log(server_url);

and when I open it the page which calls the worker in the browser: Uncaught TypeError: Failed to execute 'postMessage' on 'Worker': The 2nd argument is neither an array, nor does it have indexed properties.

all I want to do is have the username and server_url getting passed to the worker I know that in the examples I hardcoded the server_url, but in the real script, it's dynamic.

Please don't just say: change this, do that, but provide me with code so I can see how it should be done rather than still having to figure it out myself.

like image 667
Finlay Roelofs Avatar asked Feb 08 '16 13:02

Finlay Roelofs


1 Answers

Post like this:

w.postMessage({ 
    user: username, 
    url: server_url 
})

on message event do:

onmessage = function (e) {
    username = e.data.user;
    server_url = e.data.url;
}
like image 87
Cyril Cherian Avatar answered Oct 09 '22 05:10

Cyril Cherian