finds.dev← search

// the find

paullouisageneau/libdatachannel

★ 2,618 · C++ · MPL-2.0 · updated Jun 2026

C/C++ WebRTC network library featuring Data Channels, Media Transport, and WebSockets

libdatachannel is a C/C++ implementation of WebRTC (data channels + media transport) and WebSockets, with a C API for FFI bindings. It's the alternative you reach for when you need WebRTC in a native app but don't want to pull in the 30MB+ Google WebRTC blob. Actively maintained, browser-compatible, and available across Linux/macOS/Windows/iOS/Android.

The TLS backend is swappable at compile time (GnuTLS, Mbed TLS, OpenSSL) — useful when targeting embedded or sandboxed environments where you can't ship OpenSSL. The C API is a genuine first-class citizen, not an afterthought, which means Rust/Node.js/Unity bindings are solid rather than fragile. ICE is handled by the author's own libjuice, which lets you multiplex all connections on a single UDP port — something libnice doesn't do cleanly. The WASM compatibility story via datachannel-wasm is practical: write once in C++, compile to both native and browser.

Media transport (SRTP/RTP) is present but thin — there's no built-in codec negotiation, packetization, or jitter buffer. You're on your own for anything above raw RTP frames, which is a lot of work if you actually need to stream video. The signaling layer is entirely DIY; every example ships its own ad hoc signaling server, and there's no guidance on production signaling at scale. Documentation is mostly the API reference and examples — the conceptual model of how ICE restarts, renegotiation, and connection teardown interact is not written down anywhere. The dependency chain (usrsctp, libsrtp, libjuice all as submodules) means build reproducibility depends on submodule pin discipline, and usrsctp in particular has had security issues historically.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →