Expand description
Saorsa WebRTC - WebRTC implementation over ant-quic transport
This library provides a WebRTC implementation that uses ant-quic as the underlying transport layer instead of traditional ICE/STUN/TURN. It features:
- Native QUIC Transport: Uses ant-quic for reliable, encrypted connections
- DHT-based Signaling: Distributed signaling without centralized servers
- Post-Quantum Cryptography: Built-in PQC support via ant-quic
- NAT Traversal: Automatic hole punching and relay fallback
- High Performance: Low-latency media streaming with QoS
§Examples
use saorsa_webrtc_core::{WebRtcService, MediaConstraints, SignalingHandler, AntQuicTransport, TransportConfig, PeerIdentityString};
use std::sync::Arc;
// Create signaling transport
let transport = Arc::new(AntQuicTransport::new(TransportConfig::default()));
let signaling = Arc::new(SignalingHandler::new(transport));
// Create WebRTC service
let service = WebRtcService::<PeerIdentityString, AntQuicTransport>::new(
signaling,
Default::default()
).await?;
// Start service
service.start().await?;
// Initiate a video call
let call_id = service.initiate_call(
PeerIdentityString::new("eve-frank-grace-henry"),
MediaConstraints::video_call()
).await?;Re-exports§
pub use call::CallManager;pub use call::CallManagerConfig;pub use identity::PeerIdentity;pub use identity::PeerIdentityString;pub use link_transport::LinkTransport;pub use link_transport::LinkTransportError;pub use link_transport::PeerConnection;pub use link_transport::StreamType as LinkStreamType;pub use media::AudioDevice;pub use media::AudioTrack;pub use media::MediaEvent;pub use media::MediaStream;pub use media::MediaStreamManager;pub use media::VideoDevice;pub use media::VideoTrack;pub use protocol_handler::WebRtcHandlerConfig;pub use protocol_handler::WebRtcHandlerError;pub use protocol_handler::WebRtcIncoming;pub use protocol_handler::WebRtcProtocolHandler;pub use protocol_handler::WebRtcProtocolHandlerBuilder;pub use quic_bridge::RtpPacket;pub use quic_bridge::StreamConfig;pub use quic_bridge::StreamType;pub use quic_bridge::WebRtcQuicBridge;pub use quic_media_transport::MediaTransportError;pub use quic_media_transport::MediaTransportState;pub use quic_media_transport::QuicMediaTransport;pub use quic_media_transport::StreamHandle;pub use quic_media_transport::StreamPriority;pub use quic_media_transport::TransportStats;pub use service::WebRtcConfig;pub use service::WebRtcEvent;pub use service::WebRtcService;pub use service::WebRtcServiceBuilder;pub use signaling::SignalingHandler;pub use signaling::SignalingMessage as SignalingMessageType;pub use signaling::SignalingTransport;pub use transport::AntQuicTransport;pub use transport::TransportConfig;pub use types::*;
Modules§
- call
- Call management and state (requires legacy-webrtc feature) Call management for WebRTC
- identity
- Peer identity abstraction Peer identity abstraction
- link_
transport - Link transport abstraction layer Link transport abstraction layer
- media
- Media stream management (requires legacy-webrtc feature) Media stream management for WebRTC
- prelude
- Prelude module for convenient imports
- protocol_
handler - Protocol handler for SharedTransport integration WebRTC protocol handler for SharedTransport integration
- quic_
bridge - Bridge between WebRTC and QUIC WebRTC to QUIC bridge
- quic_
media_ transport - QUIC-based media transport for RTP/RTCP over QUIC streams QUIC Media Transport for WebRTC over ant-quic
- quic_
streams - QUIC media stream management with QoS QUIC media stream management with QoS
- service
- WebRTC service and configuration (requires legacy-webrtc feature) WebRTC service orchestration
- signaling
- Signaling protocol and handlers WebRTC signaling protocol
- transport
- ant-quic transport integration Transport layer implementations
- types
- Core WebRTC types and data structures WebRTC types and data structures