diff --git a/cli/tests/workers/http_worker.js b/cli/tests/workers/http_worker.js new file mode 100644 index 0000000000..ee2e5397ec --- /dev/null +++ b/cli/tests/workers/http_worker.js @@ -0,0 +1,10 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +const listener = Deno.listen({ hostname: "127.0.0.1", port: 4500 }); +for await (const conn of listener) { + (async () => { + const requests = Deno.serveHttp(conn); + for await (const { respondWith } of requests) { + respondWith(new Response("Hello world")); + } + })(); +} diff --git a/cli/tests/workers/test.ts b/cli/tests/workers/test.ts index e5e9e44f75..72b87e3984 100644 --- a/cli/tests/workers/test.ts +++ b/cli/tests/workers/test.ts @@ -697,3 +697,27 @@ Deno.test({ worker.terminate(); }, }); + +Deno.test({ + name: "Worker with native HTTP", + fn: async function () { + const worker = new Worker( + new URL( + "./http_worker.js", + import.meta.url, + ).href, + { + type: "module", + deno: { + namespace: true, + permissions: "inherit", + }, + }, + ); + + assert(worker); + const response = await fetch("http://localhost:4500"); + assert(await response.arrayBuffer()); + worker.terminate(); + }, +}); diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 8c8761d627..57c3909e1a 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -261,6 +261,7 @@ impl WebWorker { ops::fs::init(js_runtime); ops::net::init(js_runtime); ops::os::init(js_runtime); + ops::http::init(js_runtime); ops::permissions::init(js_runtime); ops::plugin::init(js_runtime); ops::process::init(js_runtime);