From 550d8759b1c3b71651cc318d5bafea45a4aee464 Mon Sep 17 00:00:00 2001 From: ading2210 Date: Sun, 3 Mar 2024 17:28:41 -0500 Subject: [PATCH 1/2] fix attempted document access in web workers --- README.md | 7 +++++++ client/javascript/main.js | 20 ++++++++++++++------ client/package.json | 2 +- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e9aa0d0..2b6d87c 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,13 @@ document.addEventListener("libcurl_load", ()=>{ }); ``` +Alternatively, the `libcurl.onload` callback can be used. +```js +libcurl.onload = () => { + console.log("libcurl.js ready!"); +} +``` + Once loaded, there will be a `window.libcurl` object which includes all the API functions. The `libcurl.ready` property can also be used to know if the WASM has loaded. ### Making HTTP Requests: diff --git a/client/javascript/main.js b/client/javascript/main.js index b165cb5..1fbfd79 100644 --- a/client/javascript/main.js +++ b/client/javascript/main.js @@ -30,6 +30,7 @@ var event_loop = null; var active_requests = 0; var wasm_ready = false; var version_dict = null; +var api = null; const libcurl_version = "__library_version__"; function check_loaded(check_websocket) { @@ -267,7 +268,7 @@ async function libcurl_fetch(url, params={}) { function set_websocket_url(url) { websocket_url = url; - if (!Module.websocket) { + if (!Module.websocket && ENVIRONMENT_IS_WEB) { document.addEventListener("libcurl_load", () => { set_websocket_url(url); }); @@ -292,8 +293,11 @@ function main() { _init_curl(); set_websocket_url(websocket_url); - let load_event = new Event("libcurl_load"); - document.dispatchEvent(load_event); + if (ENVIRONMENT_IS_WEB) { + let load_event = new Event("libcurl_load"); + document.dispatchEvent(load_event); + } + api.onload(); } function load_wasm(url) { @@ -303,7 +307,7 @@ function load_wasm(url) { } Module.onRuntimeInitialized = main; -return { +api = { fetch: libcurl_fetch, set_websocket: set_websocket_url, load_wasm: load_wasm, @@ -319,7 +323,11 @@ return { get stdout() {return out}, set stdout(callback) {out = callback}, get stderr() {return err}, - set stderr(callback) {err = callback} -} + set stderr(callback) {err = callback}, + + onload() {} +}; + +return api; })() \ No newline at end of file diff --git a/client/package.json b/client/package.json index 1baac58..a676234 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "libcurl.js", - "version": "0.3.8", + "version": "0.3.9", "description": "An experimental port of libcurl to WebAssembly for use in the browser.", "main": "libcurl.mjs", "scripts": { From 65a8e1c64134c022efa928b44fd23f037cc994e8 Mon Sep 17 00:00:00 2001 From: ading2210 Date: Mon, 4 Mar 2024 13:53:25 -0500 Subject: [PATCH 2/2] add web worker demo --- client/worker.html | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 client/worker.html diff --git a/client/worker.html b/client/worker.html new file mode 100644 index 0000000..6cf3096 --- /dev/null +++ b/client/worker.html @@ -0,0 +1,33 @@ + + + + + + + + +

emscripten tests

+ + \ No newline at end of file