web-transport-ws 0.2.0

WebTransport polyfill using WebSockets
Documentation

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/pathwss://example.com/path

Building

Rust

cargo build

TypeScript/JavaScript

npm install
npm run build

License

MIT OR Apache-2.0