Search code examples
javascripthtmlweb-worker

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.


Solution

  • 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;
    }