use h2-wasm

This commit is contained in:
Toshit Chawda 2024-10-21 17:38:50 -07:00
parent ee08a10e10
commit 065de8e85f
No known key found for this signature in database
GPG key ID: 91480ED99E2B3D9D
7 changed files with 33 additions and 9 deletions

19
Cargo.lock generated
View file

@ -683,7 +683,7 @@ dependencies = [
[[package]] [[package]]
name = "epoxy-client" name = "epoxy-client"
version = "2.1.13" version = "2.1.14"
dependencies = [ dependencies = [
"async-compression", "async-compression",
"async-trait", "async-trait",
@ -699,6 +699,7 @@ dependencies = [
"http-body-util", "http-body-util",
"hyper", "hyper",
"hyper-util-wasm", "hyper-util-wasm",
"instant",
"js-sys", "js-sys",
"parking_lot_core", "parking_lot_core",
"pin-project-lite", "pin-project-lite",
@ -1015,8 +1016,7 @@ dependencies = [
[[package]] [[package]]
name = "h2" name = "h2"
version = "0.4.6" version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "git+https://github.com/r58Playz/h2-wasm#5f06b28102b5e41771c5e3951bfffe8acba9da56"
checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205"
dependencies = [ dependencies = [
"atomic-waker", "atomic-waker",
"bytes", "bytes",
@ -1025,6 +1025,7 @@ dependencies = [
"futures-sink", "futures-sink",
"http", "http",
"indexmap 2.6.0", "indexmap 2.6.0",
"instant",
"slab", "slab",
"tokio", "tokio",
"tokio-util", "tokio-util",
@ -1297,6 +1298,18 @@ dependencies = [
"hashbrown 0.15.0", "hashbrown 0.15.0",
] ]
[[package]]
name = "instant"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
dependencies = [
"cfg-if",
"js-sys",
"wasm-bindgen",
"web-sys",
]
[[package]] [[package]]
name = "ipconfig" name = "ipconfig"
version = "0.3.2" version = "0.3.2"

View file

@ -11,3 +11,4 @@ opt-level = 3
[patch.crates-io] [patch.crates-io]
fastwebsockets = { git = "https://github.com/r58Playz/fastwebsockets" } fastwebsockets = { git = "https://github.com/r58Playz/fastwebsockets" }
h2 = { git = "https://github.com/r58Playz/h2-wasm" }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "epoxy-client" name = "epoxy-client"
version = "2.1.13" version = "2.1.14"
edition = "2021" edition = "2021"
[lib] [lib]
@ -50,6 +50,10 @@ features = ["web"]
version = "*" version = "*"
features = ["nightly"] features = ["nightly"]
[dependencies.instant]
version = "*"
features = ["wasm-bindgen"]
[features] [features]
default = ["full"] default = ["full"]
full = ["dep:fastwebsockets", "dep:async-compression", "dep:rustls-webpki", "dep:rustls-pemfile", "hyper-util-wasm/http2"] full = ["dep:fastwebsockets", "dep:async-compression", "dep:rustls-webpki", "dep:rustls-pemfile", "hyper-util-wasm/http2"]

View file

@ -30,7 +30,7 @@ else
fi fi
mv out/epoxy_client_bg.wasm out/epoxy_client_unoptimized.wasm mv out/epoxy_client_bg.wasm out/epoxy_client_unoptimized.wasm
wasm-opt --signext-lowering out/epoxy_client_unoptimized.wasm -o out/epoxy_client_lowered.wasm wasm-opt $WASMOPTFLAGS --signext-lowering out/epoxy_client_unoptimized.wasm -o out/epoxy_client_lowered.wasm
if [ "${RELEASE:-0}" = "1" ]; then if [ "${RELEASE:-0}" = "1" ]; then
( (

View file

@ -1,6 +1,6 @@
{ {
"name": "@mercuryworkshop/epoxy-tls", "name": "@mercuryworkshop/epoxy-tls",
"version": "2.1.13-1", "version": "2.1.14-1",
"description": "A wasm library for using raw encrypted tls/ssl/tcp/udp/https/websocket streams on the browser", "description": "A wasm library for using raw encrypted tls/ssl/tcp/udp/https/websocket streams on the browser",
"scripts": { "scripts": {
"build": "./build.sh" "build": "./build.sh"

View file

@ -2,7 +2,7 @@
set -euo pipefail set -euo pipefail
shopt -s inherit_errexit shopt -s inherit_errexit
export RELEASE=1 export RELEASE="${RELEASE:-1}"
rm -r full minimal || true rm -r full minimal || true

View file

@ -424,10 +424,16 @@ impl EpoxyClient {
}; };
let service = StreamProviderService(stream_provider.clone()); let service = StreamProviderService(stream_provider.clone());
let client = Client::builder(WasmExecutor) let mut builder = Client::builder(WasmExecutor);
builder
.http09_responses(true) .http09_responses(true)
.http1_title_case_headers(options.title_case_headers) .http1_title_case_headers(options.title_case_headers)
.http1_max_headers(options.header_limit) .http1_max_headers(options.header_limit);
#[cfg(feature = "full")]
builder
.http2_max_concurrent_reset_streams(10); // set back to default, on wasm it is 0
let client = builder
.build(service); .build(service);
Ok(Self { Ok(Self {