libDataChannelPB WebRTC library
Posted: Sat Jan 06, 2024 10:55 pm
libdatachannel is a standalone implementation of WebRTC Data Channels, WebRTC Media Transport, and WebSockets.
WebRTC is a W3C and IETF standard enabling real-time peer-to-peer data and media exchange between two devices.
The security layer is provided by OpenSSL. The WebRTC stack is fully compatible with browsers like Firefox and Chromium
libdatachannel is licensed under MPL 2.0 since version 0.18
The library implements the following communication protocols:
WebRTC Data Channels and Media Transport
WebRTC allows real-time data and media exchange between two devices through a Peer Connection (or RTCPeerConnection), a signaled peer-to-peer connection which can carry both Data Channels and media tracks. It is compatible with browsers Firefox, Chromium, and Safari, and other WebRTC libraries.
Protocol stack:
SCTP-based Data Channels (RFC8831)
SRTP-based Media Transport (RFC8834)
DTLS/UDP (RFC7350 and RFC8261)
ICE (RFC8445) with STUN (RFC8489) and its extension TURN (RFC8656)
Features:
Full IPv6 support (as mandated by RFC8835)
Trickle ICE (RFC8838)
JSEP-compatible session establishment with SDP (RFC8829)
SCTP over DTLS with SDP offer/answer (RFC8841)
DTLS with ECDSA or RSA keys (RFC8827)
SRTP and SRTCP key derivation from DTLS (RFC5764)
Differentiated Services QoS (RFC8837) where possible
Multicast DNS candidates (draft-ietf-rtcweb-mdns-ice-candidates-04)
Multiplexing connections on a single UDP port with libjuice as ICE backend
Note only SDP BUNDLE mode is supported for media multiplexing (RFC8843). The behavior is equivalent to the JSEP bundle-only policy: the library always negotiates one unique network component, where SRTP media streams are multiplexed with SRTCP control packets (RFC5761) and SCTP/DTLS data traffic (RFC8261).
WebSocket
WebSocket is the protocol of choice for WebRTC signaling.
Protocol stack:
WebSocket protocol (RFC6455), client and server side
HTTP over TLS (RFC2818)
Features:
IPv6 and IPv4/IPv6 dual-stack support
Keepalive with ping/pong
PB build Win x64 here pb 6.10
https://github.com/idle-PB/libdatachannelPB
and the source libs examples and docs here
https://github.com/paullouisageneau/libdatachannel
NB: This is a preliminary build as there is a bug in the latest Openssl build on windows x64, so it's linked to an older SSL implementation but it's still ok for native server / clients use.
Only test is the web socket at this stage.
Use cases:
create p2p applications with reliable UDP or TCP connections.
If a stun server is required. There is a linux stun and turn server
https://github.com/paullouisageneau/violet
or maybe you can use freestun
https://freestun.net/
WebRTC is a W3C and IETF standard enabling real-time peer-to-peer data and media exchange between two devices.
The security layer is provided by OpenSSL. The WebRTC stack is fully compatible with browsers like Firefox and Chromium
libdatachannel is licensed under MPL 2.0 since version 0.18
The library implements the following communication protocols:
WebRTC Data Channels and Media Transport
WebRTC allows real-time data and media exchange between two devices through a Peer Connection (or RTCPeerConnection), a signaled peer-to-peer connection which can carry both Data Channels and media tracks. It is compatible with browsers Firefox, Chromium, and Safari, and other WebRTC libraries.
Protocol stack:
SCTP-based Data Channels (RFC8831)
SRTP-based Media Transport (RFC8834)
DTLS/UDP (RFC7350 and RFC8261)
ICE (RFC8445) with STUN (RFC8489) and its extension TURN (RFC8656)
Features:
Full IPv6 support (as mandated by RFC8835)
Trickle ICE (RFC8838)
JSEP-compatible session establishment with SDP (RFC8829)
SCTP over DTLS with SDP offer/answer (RFC8841)
DTLS with ECDSA or RSA keys (RFC8827)
SRTP and SRTCP key derivation from DTLS (RFC5764)
Differentiated Services QoS (RFC8837) where possible
Multicast DNS candidates (draft-ietf-rtcweb-mdns-ice-candidates-04)
Multiplexing connections on a single UDP port with libjuice as ICE backend
Note only SDP BUNDLE mode is supported for media multiplexing (RFC8843). The behavior is equivalent to the JSEP bundle-only policy: the library always negotiates one unique network component, where SRTP media streams are multiplexed with SRTCP control packets (RFC5761) and SCTP/DTLS data traffic (RFC8261).
WebSocket
WebSocket is the protocol of choice for WebRTC signaling.
Protocol stack:
WebSocket protocol (RFC6455), client and server side
HTTP over TLS (RFC2818)
Features:
IPv6 and IPv4/IPv6 dual-stack support
Keepalive with ping/pong
PB build Win x64 here pb 6.10
https://github.com/idle-PB/libdatachannelPB
and the source libs examples and docs here
https://github.com/paullouisageneau/libdatachannel
NB: This is a preliminary build as there is a bug in the latest Openssl build on windows x64, so it's linked to an older SSL implementation but it's still ok for native server / clients use.
Only test is the web socket at this stage.
Use cases:
create p2p applications with reliable UDP or TCP connections.
If a stun server is required. There is a linux stun and turn server
https://github.com/paullouisageneau/violet
or maybe you can use freestun
https://freestun.net/