demo · v131
worker probe: navigator.hid in a dedicated worker
v131 exposes navigator.hid inside dedicated workers. The main thread is freed from blocking I/O on HID reads — useful for high-frequency gaming peripherals, MIDI controllers, hardware key dongles. This page spawns a worker and asks it to enumerate devices on a tight loop.
main-thread view
worker view (postMessage relay)
the api
// main.js
const w = new Worker("hid-worker.js", { type: "module" });
w.postMessage({ cmd: "enumerate" });
// hid-worker.js
self.onmessage = async (e) => {
if (e.data.cmd === "enumerate") {
const devices = await navigator.hid.getDevices();
self.postMessage({ devices: devices.map(d => ({ vendorId: d.vendorId, productId: d.productId, name: d.productName })) });
}
};