diff options
author | Satya Rohith <me@satyarohith.com> | 2021-04-20 19:56:31 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-20 16:26:31 +0200 |
commit | 15ffdd2624108f99960fc2da86e4f751e32bfd16 (patch) | |
tree | 2817ea0ad87a2fc3148380e4ee298e1fd1cc9cc3 | |
parent | 9e6cd91014ac4a0d34556b0d09cbe25e4e0930c6 (diff) |
fix(runtime): include HTTP op in WebWorker (#10207)
-rw-r--r-- | cli/tests/workers/http_worker.js | 10 | ||||
-rw-r--r-- | cli/tests/workers/test.ts | 24 | ||||
-rw-r--r-- | runtime/web_worker.rs | 1 |
3 files changed, 35 insertions, 0 deletions
diff --git a/cli/tests/workers/http_worker.js b/cli/tests/workers/http_worker.js new file mode 100644 index 000000000..ee2e5397e --- /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 e5e9e44f7..72b87e398 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 8c8761d62..57c3909e1 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); |