Signatur
Beschreibung
Die schreibgeschützte Eigenschaft host des WorkerLocation-Objekts gibt den Host-Teil der Skript-URL des Workers zurück. Dazu gehört der Hostname und, sofern die URL einen vom Standard abweichenden Port enthält, ein Doppelpunkt mit der Portnummer, z. B. "example.com:8080". Bei Standard-Ports (80 bei http:, 443 bei https:) fehlt der Port.
Innerhalb eines Workers (Dedicated, Shared oder Service Worker) erreichst du das Objekt über self.location bzw. einfach location. Es entspricht einer schreibgeschützten Variante von window.location. Anders als im Hauptthread lässt sich die Adresse hier nicht ändern.
Typische Einsatzfälle sind das Zusammensetzen absoluter URLs für fetch()-Aufrufe und WebSocket-Verbindungen zum eigenen Server, umgebungsabhängige Konfiguration (Entwicklung oder Produktion) sowie Protokollierung und Fehlersuche.
Rückgabewert
:port, wenn ein Nicht-Standard-Port verwendet wird. Bei URLs ohne Host (z. B. blob: oder data:) ist der Wert unter Umständen ein leerer String.Beispiele
Host im Worker auslesen
// worker.js – geladen von https://app.example.com:8443/js/worker.js
console.log(self.location.host);
console.log(self.location.hostname);
console.log(self.location.port);
WebSocket-URL zum eigenen Server bauen
// worker.js
const wsProtocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
const socket = new WebSocket(`${wsProtocol}//${location.host}/live`);
socket.addEventListener('message', (event) => {
self.postMessage(JSON.parse(event.data));
});
Umgebungsabhängige API-Basis wählen
// worker.js
const isDev = location.host.startsWith('localhost');
const apiBase = isDev ? `http://${location.host}/api` : 'https://api.example.com';
self.addEventListener('message', async ({ data }) => {
const res = await fetch(`${apiBase}/items/${data.id}`);
self.postMessage(await res.json());
});
Host aus dem Hauptthread abfragen
// main.js
const worker = new Worker('/js/host-worker.js');
worker.onmessage = (e) => console.log('Worker-Host:', e.data);
// host-worker.js
self.postMessage(self.location.host);
// Wichtig · Fallstricke
hostoderhostname:hostenthält einen gesetzten Port,hostnamenie. Für Vergleiche von Domains nimmst du besserhostname.- Standard-Ports fehlen: Bei
https://example.com:443/lieferthostnur"example.com". - Blob- und Data-Worker: Wird der Worker aus einer
blob:-URL erzeugt, spiegeltlocationdiese URL wider.hostist dann in der Regel leer. Übergib die benötigte Server-Adresse in diesem Fall perpostMessage. - Schreibgeschützt: Eine Zuweisung hat keine Wirkung. Im strikten Modus wirft sie einen
TypeError, weil es nur einen Getter gibt. - IPv6: Adressen stehen in eckigen Klammern, z. B.
"[::1]:3000". - Kompatibilität: Wird von allen modernen Browsern und von Deno unterstützt. In Node.js-
worker_threadsgibt es keinWorkerLocation.