every.channel: sanitized baseline
This commit is contained in:
commit
897e556bea
258 changed files with 74298 additions and 0 deletions
56
third_party/iroh-live/web-transport-iroh/src/lib.rs
vendored
Normal file
56
third_party/iroh-live/web-transport-iroh/src/lib.rs
vendored
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
//! WebTransport is a protocol for client-server communication over QUIC.
|
||||
//! It's [available in the browser](https://caniuse.com/webtransport) as an alternative to HTTP and WebSockets.
|
||||
//!
|
||||
//! WebTransport is layered on top of HTTP/3 which is then layered on top of QUIC.
|
||||
//! This library hides that detail and tries to expose only the QUIC API, delegating as much as possible to the underlying implementation.
|
||||
//! See the [Quinn documentation](https://docs.rs/quinn/latest/quinn/) for more documentation.
|
||||
//!
|
||||
//! QUIC provides two primary APIs:
|
||||
//!
|
||||
//! # Streams
|
||||
//! QUIC streams are ordered, reliable, flow-controlled, and optionally bidirectional.
|
||||
//! Both endpoints can create and close streams (including an error code) with no overhead.
|
||||
//! You can think of them as TCP connections, but shared over a single QUIC connection.
|
||||
//!
|
||||
//! # Datagrams
|
||||
//! QUIC datagrams are unordered, unreliable, and not flow-controlled.
|
||||
//! Both endpoints can send datagrams below the MTU size (~1.2kb minimum) and they might arrive out of order or not at all.
|
||||
//! They are basically UDP packets, except they are encrypted and congestion controlled.
|
||||
//!
|
||||
//! # Limitations
|
||||
//! WebTransport is able to be pooled with HTTP/3 and multiple WebTransport sessions.
|
||||
//! This crate avoids that complexity, doing the bare minimum to support a single WebTransport session that owns the entire QUIC connection.
|
||||
//! If you want to support HTTP/3 on the same host/port, you should use another crate (ex. `h3-webtransport`).
|
||||
//! If you want to support multiple WebTransport sessions over the same QUIC connection... you should just dial a new QUIC connection instead.
|
||||
|
||||
// External
|
||||
mod client;
|
||||
mod connect;
|
||||
mod error;
|
||||
mod recv;
|
||||
mod send;
|
||||
mod server;
|
||||
mod session;
|
||||
mod settings;
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
pub use client::*;
|
||||
pub use connect::*;
|
||||
pub use error::*;
|
||||
pub use recv::*;
|
||||
pub use send::*;
|
||||
pub use server::*;
|
||||
pub use session::*;
|
||||
pub use settings::*;
|
||||
|
||||
/// The HTTP/3 ALPN is required when negotiating a QUIC connection.
|
||||
pub const ALPN_H3: &str = "h3";
|
||||
|
||||
/// Re-export the http crate because it's in the public API.
|
||||
pub use http;
|
||||
pub use iroh;
|
||||
/// Re-export the underlying QUIC implementation.
|
||||
pub use quinn;
|
||||
/// Re-export the generic WebTransport implementation.
|
||||
pub use web_transport_trait as generic;
|
||||
Loading…
Add table
Add a link
Reference in a new issue