|
@@ -1,19 +1,20 @@
|
|
|
# libdatachannel - C/C++ WebRTC network library
|
|
|
|
|
|
[](https://www.mozilla.org/en-US/MPL/2.0/)
|
|
|
-[](https://github.com/paullouisageneau/libdatachannel/actions/workflows/build-openssl.yml)
|
|
|
[](https://github.com/paullouisageneau/libdatachannel/actions/workflows/build-gnutls.yml)
|
|
|
-[](https://gitter.im/libdatachannel/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
|
-[](https://discord.gg/jXAP8jp3Nn)
|
|
|
+[](https://github.com/paullouisageneau/libdatachannel/actions/workflows/build-mbedtls.yml)
|
|
|
+[](https://github.com/paullouisageneau/libdatachannel/actions/workflows/build-openssl.yml)
|
|
|
|
|
|
[](https://repology.org/project/libdatachannel/versions) [](https://repology.org/project/libdatachannel/versions) [](https://repology.org/project/libdatachannel/versions)
|
|
|
+[](https://gitter.im/libdatachannel/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
|
+[](https://discord.gg/jXAP8jp3Nn)
|
|
|
|
|
|
libdatachannel is a standalone implementation of WebRTC Data Channels, WebRTC Media Transport, and WebSockets in C++17 with C bindings for POSIX platforms (including GNU/Linux, Android, FreeBSD, Apple macOS and iOS) and Microsoft Windows. WebRTC is a W3C and IETF standard enabling real-time peer-to-peer data and media exchange between two devices.
|
|
|
|
|
|
The library aims at being both straightforward and lightweight with minimal external dependencies, to enable direct connectivity between native applications and web browsers without the pain of importing Google's bloated [reference library](https://webrtc.googlesource.com/src/). The interface consists of somewhat simplified versions of the JavaScript WebRTC and WebSocket APIs present in browsers, in order to ease the design of cross-environment applications.
|
|
|
|
|
|
It can be compiled with multiple backends:
|
|
|
-- The security layer can be provided through [OpenSSL](https://www.openssl.org/) or [GnuTLS](https://www.gnutls.org/).
|
|
|
+- The security layer can be provided through [GnuTLS](https://www.gnutls.org/), [Mbed TLS](https://www.trustedfirmware.org/projects/mbed-tls/), or [OpenSSL](https://www.openssl.org/).
|
|
|
- The connectivity for WebRTC can be provided through my ad-hoc ICE library [libjuice](https://github.com/paullouisageneau/libjuice) as submodule or through [libnice](https://github.com/libnice/libnice).
|
|
|
|
|
|
The WebRTC stack is fully compatible with browsers like Firefox and Chromium, see [Compatibility](#Compatibility) below. Additionally, code using Data Channels and WebSockets from the library may be compiled as is to WebAssembly for browsers with [datachannel-wasm](https://github.com/paullouisageneau/datachannel-wasm).
|
|
@@ -24,12 +25,12 @@ libdatachannel is available on [AUR](https://aur.archlinux.org/packages/libdatac
|
|
|
|
|
|
## Dependencies
|
|
|
|
|
|
-- [GnuTLS](https://www.gnutls.org/) or [OpenSSL](https://www.openssl.org/)
|
|
|
+- [GnuTLS](https://www.gnutls.org/), [Mbed TLS](https://www.trustedfirmware.org/projects/mbed-tls/), or [OpenSSL](https://www.openssl.org/)
|
|
|
- [usrsctp](https://github.com/sctplab/usrsctp) (as submodule by default)
|
|
|
- [Plog](https://github.com/SergiusTheBest/plog) (as submodule by default)
|
|
|
- [libjuice](https://github.com/paullouisageneau/libjuice) (as submodule by default) or [libnice](https://nice.freedesktop.org/) as an ICE backend.
|
|
|
- [libsrtp](https://github.com/cisco/libsrtp) (as submodule by default) required if compiled with media support.
|
|
|
-- [Nlohmann JSON](https://github.com/nlohmann/json) (as submodule by default) required to build examples.
|
|
|
+- [nlohmann JSON](https://github.com/nlohmann/json) (as submodule by default) required to build examples.
|
|
|
|
|
|
## Building
|
|
|
|