summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSatya Rohith <me@satyarohith.com>2021-04-20 19:56:31 +0530
committerGitHub <noreply@github.com>2021-04-20 16:26:31 +0200
commit15ffdd2624108f99960fc2da86e4f751e32bfd16 (patch)
tree2817ea0ad87a2fc3148380e4ee298e1fd1cc9cc3
parent9e6cd91014ac4a0d34556b0d09cbe25e4e0930c6 (diff)
fix(runtime): include HTTP op in WebWorker (#10207)
-rw-r--r--cli/tests/workers/http_worker.js10
-rw-r--r--cli/tests/workers/test.ts24
-rw-r--r--runtime/web_worker.rs1
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);