{{ gecko_minversion_header("2") }}
{{ non-standard_header() }}
{{ APIRef("Web Workers") }}
Summary
If you're developing privileged code, and would like to create a worker that can use js-ctypes to perform calls to native code, you can do so by using ChromeWorker
instead of the standard {{ domxref("Worker") }} object. It works exactly like a standard {{ domxref("Worker") }}, except that it has access to js-ctypes via a global ctypes
object available in the global scope of the worker. Examples of ChromeWorker's using js-ctypes are availabe on Github and are linked to from the See Also section below. To use a postMessage with callback version of ChromeWorker that features promises, see PromiseWorker.
Addons must use absolute URLs to load their workers, and those URLs have to be using a chrome://
or resource://
protocol (file://
is not accepted.) Addons that wish to use file://
URLs must first register a resource replacement path, using code like this:
var fileuri = Services.io.newFileURI(file); Services.io.getProtocolHandler("resource"). QueryInterface(Ci.nsIResProtocolHandler). setSubstitution("my-cool-addon", fileuri); var worker = new Worker("resource://my-cool-addon/worker.js");
More references:
- You can use
ChromeWorker
from JavaScript code modules. See Using workers in JavaScript code modules for details. - You can use ChromeWorker modules in ChromeWorkers.
- See Using web workers for examples and details.
See Also
- Using web workers
- Using workers in JavaScript code modules
- {{ domxref("Worker") }}
SharedWorker
- Web Workers specification
- {{ domxref("WorkerGlobalScope") }}
- GitHub :: ChromeWorker - A fully working demo addon using js-ctypes from a chrome worker. Uses WinAPI example.
- PromiseWorker
- GitHub :: PromiseWorker - Shows how to uses promises as an twist on postMessage feature of ChromeWorker