1 unstable release

0.20.1 Feb 28, 2024

#20 in #platform-independent

21 downloads per month
Used in 5 crates (via libdatachannel)

MPL-2.0 license

4MB
105K SLoC

C 89K SLoC // 0.2% comments C++ 15K SLoC // 0.1% comments Python 155 SLoC // 0.1% comments Automake 146 SLoC // 0.4% comments Rust 58 SLoC Shell 30 SLoC // 0.3% comments Objective-C++ 22 SLoC // 0.1% comments INI 14 SLoC // 0.4% comments

Contains (autotools obfuscated code, 225KB) libdatachannel/deps/libsrtp/configure, (obscure autoconf code, 15KB) libdatachannel/deps/libsrtp/configure.ac, (obscure autoconf code, 7KB) libdatachannel/deps/usrsctp/configure.ac

dachannel

dachannel is a WebRTC DataChannel library for both web (using browser WebRTC) and native (using libdatachannel). It is comprised of:

  • libdatachannel (native) / web-datachannel (web)

    Platform-level libraries for DataChannel support.

  • datachannel-facade

    A facade over platform libraries to expose an identical API for DataChannels on all platforms.

  • dachannel

    A high-level, idiomatic DataChannel library.

graph BT;
web-datachannel --web--> datachannel-facade
libdatachannel-sys --> libdatachannel;
libdatachannel --native--> datachannel-facade;
datachannel-facade --> dachannel;
dachannel --web/native--> dachannel-client;
dachannel --native--> dachannel-server;

Each level of the stack is usable independently. If you want an unopinionated platform-independent wrapper, you can use datachannel-facade. If you just need a Rust wrapper of libdatachannel, you can use libdatachannel.

Client/Server

dachannel also supports configuring WebRTC in a client-server topology.

No runtime deps

~0–5MB
~114K SLoC