5 releases
| 0.2.0 | Nov 14, 2025 |
|---|---|
| 0.1.4 |
|
| 0.1.3 | Oct 25, 2025 |
| 0.1.1 | Sep 4, 2025 |
#11 in #polyfill
153 downloads per month
Used in moq-relay
145KB
3.5K
SLoC
WebTransport Polyfill
A WebTransport polyfill that uses WebSocket as the underlying transport, with implementations in both Rust and TypeScript/JavaScript.
Wire Protocol
Both implementations use the same QUIC-like frame encoding over WebSocket:
- Variable-length integer encoding (VarInt)
- Stream multiplexing with bidirectional and unidirectional streams
- Frame types: STREAM, RESET_STREAM, STOP_SENDING, etc.
This is a simplified version of QMux, which might be used in the future.
JavaScript/TypeScript Usage
Check if WebTransport is available, otherwise install the polyfill:
import { install } from "@kixelated/web-transport-ws"
// Install the polyfill if needed.
install();
// Now WebTransport is available even in Safari
const transport = new WebTransport("https://example.com/path")
URLs are automatically rewritten with the WebSocket protocol:
https://example.com/path→wss://example.com/path
Building
Rust
cargo build
TypeScript/JavaScript
npm install
npm run build
License
MIT OR Apache-2.0
Dependencies
~6–11MB
~185K SLoC