diff --git a/README.md b/README.md index f2d6674..0ccd0d8 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,12 @@ importScripts("epoxy-bundled.js"); const { EpoxyClient } = await epoxy(); let client = await new EpoxyClient("wss://localhost:4000", navigator.userAgent, 10); +// You can view and change the user agent and redirect limit +console.log(client.userAgent); +client.redirect_limit = 5; + let response = await client.fetch("https://httpbin.org/get"); -await response.text(); +console.log(await response.text()); ``` See `client/demo.js` for more examples. diff --git a/client/Cargo.toml b/client/Cargo.toml index 4c336d0..1031bf6 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -12,7 +12,7 @@ http = "1.0.0" http-body-util = "0.1.0" hyper = { version = "1.1.0", features = ["client", "http1", "http2"] } pin-project-lite = "0.2.13" -wasm-bindgen = "0.2" +wasm-bindgen = { version = "0.2.91", features = ["enable-interning"] } wasm-bindgen-futures = "0.4.39" ws_stream_wasm = { version = "0.7.4", features = ["tokio_io"] } futures-util = "0.3.30" diff --git a/client/build.sh b/client/build.sh index 7f402f0..237915f 100755 --- a/client/build.sh +++ b/client/build.sh @@ -27,7 +27,7 @@ echo "module.exports = epoxy" >> epoxy-module-bundled.js AUTOGENERATED_TYPEDEFS=$(<"out/epoxy_client.d.ts") AUTOGENERATED_TYPEDEFS=${AUTOGENERATED_TYPEDEFS%%export class IntoUnderlyingByteSource*} echo "$AUTOGENERATED_TYPEDEFS" >"epoxy-module-bundled.d.ts" -echo "} export default function epoxy(): Promise;" >> "epoxy-module-bundled.d.ts" +echo "} export default function epoxy(maybe_memory?: WebAssembly.Memory): Promise;" >> "epoxy-module-bundled.d.ts" cp out/epoxy_client.js epoxy.js cp out/epoxy_client.d.ts epoxy.d.ts diff --git a/client/demo.js b/client/demo.js index 89b0bd5..694591c 100644 --- a/client/demo.js +++ b/client/demo.js @@ -1,6 +1,6 @@ importScripts("epoxy-bundled.js"); onmessage = async (msg) => { - console.debug("recieved:", msg); + console.debug("recieved demo:", msg); let [should_feature_test, should_multiparallel_test, should_parallel_test, should_multiperf_test, should_perf_test, should_ws_test, should_tls_test] = msg.data; console.log( "%cWASM is significantly slower with DevTools open!", @@ -8,10 +8,15 @@ onmessage = async (msg) => { ); const log = (str) => { - console.warn(str); + console.log(str); postMessage(str); } + const plog = (str) => { + console.log(str); + postMessage(JSON.stringify(str, null, 4)); + } + const { EpoxyClient } = await epoxy(); const tconn0 = performance.now(); @@ -20,6 +25,11 @@ onmessage = async (msg) => { const tconn1 = performance.now(); log(`conn establish took ${tconn1 - tconn0} ms or ${(tconn1 - tconn0) / 1000} s`); + // epoxy classes are inspectable + console.log(epoxy_client); + // you can change the user agent and redirect limit in JS + epoxy_client.redirectLimit = 15; + const test_mux = async (url) => { const t0 = performance.now(); await epoxy_client.fetch(url); @@ -138,23 +148,24 @@ onmessage = async (msg) => { log(`avg mux - avg native (${num_tests}): ${total_mux - total_native} ms or ${(total_mux - total_native) / 1000} s`); } else if (should_ws_test) { let ws = await epoxy_client.connect_ws( - () => console.log("opened"), - () => console.log("closed"), + () => log("opened"), + () => log("closed"), err => console.error(err), - msg => console.log(msg), + msg => log(msg), "wss://echo.websocket.events", [], "localhost" ); while (true) { + log("sending `data`"); await ws.send("data"); - await (new Promise((res, _) => setTimeout(res, 100))); + await (new Promise((res, _) => setTimeout(res, 50))); } } else if (should_tls_test) { let decoder = new TextDecoder(); let ws = await epoxy_client.connect_tls( - () => console.log("opened"), - () => console.log("closed"), + () => log("opened"), + () => log("closed"), err => console.error(err), msg => { console.log(msg); console.log(decoder.decode(msg)) }, "alicesworld.tech:443", @@ -163,8 +174,8 @@ onmessage = async (msg) => { await ws.close(); } else { let resp = await epoxy_client.fetch("https://httpbin.org/get"); - console.warn(resp, Object.fromEntries(resp.headers)); - console.warn(await resp.text()); + console.log(resp, Object.fromEntries(resp.headers)); + plog(await resp.json()); } log("done"); }; diff --git a/client/index.html b/client/index.html index 718f470..b78d4d8 100644 --- a/client/index.html +++ b/client/index.html @@ -3,8 +3,9 @@ epoxy