btw: MoQ is under active development. The APIs and protocols are still evolving and will change. Most of this documentation is AI generated until things get more stable.

Skip to content

web-transport

QUIC and WebTransport implementation for Rust, providing the networking layer for MoQ.

External Repository

This crate is maintained in a separate repository: moq-dev/web-transport

Overview

The web-transport crate provides:

  • QUIC client and server - Built on Quinn
  • WebTransport protocol - HTTP/3 based transport
  • Browser compatibility - Same protocol as browser WebTransport API
  • TLS management - Certificate handling utilities

Repository

GitHub: moq-dev/web-transport

Crates

The repository contains multiple crates:

CrateDescription
web-transportCore WebTransport implementation
web-transport-quinnQuinn-based QUIC transport
web-transport-wsWebSocket polyfill for non-WebTransport browsers

Installation

Add to your Cargo.toml:

toml
[dependencies]
web-transport = "0.1"
web-transport-quinn = "0.1"

Quick Start

Client & Server

See the web-transport repository for client and server examples.

For a real-world example of using web-transport with MoQ, see the rs/moq-native/examples/chat.rs example which demonstrates connection setup, publishing, and session management.

Features

  • Streams - Bidirectional and unidirectional streams
  • Datagrams - Unreliable, unordered data
  • Session Management - Peer/local addresses, graceful close
  • TLS - Self-signed certificates (dev), Let's Encrypt (production), certificate fingerprints
  • WebSocket Polyfill - See web-transport-ws

Integration with MoQ

The moq-net crate uses web-transport internally. See the moq-native examples for how connections are established.

Next Steps

Licensed under MIT or Apache-2.0