
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
@mercuryworkshop/epoxy-tls
Advanced tools
A wasm library for using raw encrypted tls/ssl/tcp/udp/https/websocket streams on the browser
Fetch and WebSocket implementation for the browser written in Rust that uses the Wisp protocol.
[!IMPORTANT] Rust nightly with the
wasm32-unknown-unknown
target andrust-std
component is required.
The build script needs some dependencies:
wasm-bindgen
: installable through cargowasm-opt
: get from WebAssembly/binaryenjq
: install from your distro's reposgit
: install from your distro's reposbash build.sh
The WASM binary and JS bindings will be placed in pkg
.
Examples are available in demo.js
.
import init, { EpoxyClient, EpoxyClientOptions, EpoxyHandlers } from "@mercuryworkshop/epoxy-tls/epoxy";
// you can also pass in the wasm after fetching it. see the typescript types for all options
await init({ module_or_path: "path/to/epoxy.wasm" });
// or you can import "@mercuryworkshop/epoxy-tls" or "@mercuryworkshop/epoxy-tls/epoxy-bundled"
// those versions have the wasm bundled into the JS as base64 so you don't need to pass anything to init()
//
// there is also a minimal version with only HTTP/1 fetch and TLS/TCP/UDP streams if you want a smaller
// bundle size. those can be imported via "@mercuryworkshop/epoxy-tls/minimal" and "minimal-bundled"
const options = new EpoxyClientOptions();
options.user_agent = navigator.userAgent;
options.wisp_v2 = true;
options.udp_extension_required = true;
// use your own selfhosted wisp server, this is the demo one with throttling
const client = new EpoxyClient("wss://wisp.mercurywork.shop", options);
const res = await client.fetch("https://example.com");
console.log(res.headers, res.rawHeaders);
console.log(await res.text());
// not available in the minimal version
let handlers = new EpoxyHandlers(
() => console.log("opened"),
() => console.log("closed"),
err => console.error(err),
msg => console.log(`got "${msg}"`)
);
let ws = await client.connect_websocket(
handlers,
"wss://echo.websocket.events",
["protocol1"],
{ "x-header": "abc" },
);
await ws.send("data");
FAQs
A wasm library for using raw encrypted tls/ssl/tcp/udp/https/websocket streams on the browser
We found that @mercuryworkshop/epoxy-tls demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.