libdatachannel

C/C++ WebRTC network library featuring Data Channels, Media Transport, and WebSockets (by paullouisageneau)

Libdatachannel Alternatives

Similar projects and alternatives to libdatachannel

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better libdatachannel alternative or higher similarity.

libdatachannel reviews and mentions

Posts with mentions or reviews of libdatachannel. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-08-21.
  • Who uses node executable without using npm?
    7 projects | reddit.com/r/node | 21 Aug 2022
    Node.js node JavaScript runtime itself provides a means to interface with native applications. Plenty of people write their own WebSocket or WebRTC data channel libraries https://github.com/paullouisageneau/libdatachannel.
  • Is it just me, or is it much easier to make complicated applications in C++ than web?
    3 projects | reddit.com/r/webdev | 14 Aug 2022
    Fourtunately some technologies and API's are extensible enough to do whatever you want in spite of and to overcome limitations; e.g., WebRTC (particularly data channels https://github.com/paullouisageneau/libdatachannel), Native Messaging, WebTransport, fetch(), Trasnferable Streams, Media Capture Transform, File API, File System Access API, Web extensions.
  • How are rust devs doing?
    10 projects | reddit.com/r/GraphicsProgramming | 17 Jul 2022
    To be fair, C++ has libdatachannel which I like using too.
  • Transport agnostic Websocket library
    6 projects | reddit.com/r/cpp | 14 Jul 2022
    https://github.com/paullouisageneau/libdatachannel ?
  • No why can't we have raw UDP in JavaScript?
    2 projects | news.ycombinator.com | 5 Jul 2022
    Or use something specific like libdatachannel https://libdatachannel.org/

    If you’re using WebRTC data channels in a client server config then infra is no more complex than a regular setup because the server will almost certainly have an external facing IP address.

    People should really try using WebRTC as well because you can get the full pipeline setup for a toy demo in a couple of slow days. I did whilst also writing my own signalling server in Go without having used Go before!

    It’s certainly not any more complex than rolling all the stuff the article is talking about on top of raw UDP.

  • Show HN: MockRTC – a mock peer and MitM proxy library for WebRTC
    2 projects | news.ycombinator.com | 5 May 2022
    This does use a real WebRTC stack (specifically libdatachannel - https://libdatachannel.org). Under the hood this is making real WebRTC connections.

    But I guess you mean why it doesn't mock using real peers in the browser where the tests are happening, using the browser's existing stack there?

    There's a few reasons I've avoided that:

    * Primarily: I want to do things that the browser APIs won't let you do. E.g. sending invalid data, or intentionally causing various types of errors. The browser APIs are designed to stop you doing the wrong thing, by keeping the raw data at arm's length. Very sensible for normal WebRTC usage, but bad for testing edge cases and breaking things.

  • FFmpeg - correct configuration for building webRTC in native C++?
    3 projects | reddit.com/r/WebRTC | 3 May 2022
    Building WebRTC tends to be hell. If your use case is simple enough, it might be interesting to switch to an alternative C++ library like libdatachannel (I'm the author).
  • What are the differences between UDP and WebSockets, and which type of games benefit from which?
    2 projects | reddit.com/r/gamedev | 2 May 2022
    You can, in theory, get UDP-like characteristics out of a different web API - with a WebRTC datachannel configured to be unreliable and unordered. I haven't seen anybody use that API just because it's a pretty big pain to use. The developer of Agar IO called it too hard to use in a HackerNews comment, but nowadays there's simpler libraries than the ones he had in 2016 like webrtc-unreliable and libdatachannel. You still need to run a STUN/TURN server and the integration is easier than it was back then, but still much harder than raw UDP sockets though.
  • string to const char* for popen()
    6 projects | reddit.com/r/cpp_questions | 21 Feb 2022
    exit(EXIT_SUCCESS); } char message[message_length]; fread(message, message_length, sizeof(char), stdin); string m(message, message + sizeof message / sizeof message[0]); return json::parse(m); } // Encode a message for transmission, given its content. message_t encode_message(json content) { string encoded_content = content.dump(); message_t m; m.content = encoded_content; m.length = (uint32_t)encoded_content.length(); return m; } // Send an encoded message to stdout. void send_message(message_t encoded_message) { char *raw_length = reinterpret_cast(&encoded_message.length); fwrite(raw_length, 4, sizeof(char), stdout); fwrite(encoded_message.content.c_str(), encoded_message.length, sizeof(char), stdout); fflush(stdout); } int main(int argc, char *argv[]) { while (true) { json message = get_message(); auto command = message.get(); // https://github.com/paullouisageneau/libdatachannel/issues/544#issuecomment-1024739214 // https://www.reddit.com/r/cpp\_questions/comments/swr1tk/comment/hxral9f/ FILE *pipe = popen(command.c_str(), "r"); while (true) { size_t bufferSize = 1024; byte buffer[bufferSize]; size_t count; while ((count = fread(buffer, 1, bufferSize, pipe)) > 0) { stringstream data; // S16NE PCM from parec to integers in JSON array data << "["; for (size_t i = 0; i < count; i++) { data << (int)buffer[i]; if (i < count - 1) { data << ","; } } data << "]"; // send JSON array to Native Messaging local client send_message(encode_message(data.str())); } } } }
  • Libwebsockets a powerful and lightweight pure C library
    7 projects | news.ycombinator.com | 6 Sep 2021
  • A note from our sponsor - Scout APM
    scoutapm.com | 9 Dec 2022
    Scout APM is great for developers who want to find and fix performance issues in their applications. With Scout, we'll take care of the bugs so you can focus on building great things 🚀. Learn more →

Stats

Basic libdatachannel repo stats
15
949
9.3
about 21 hours ago
Truly a developer’s best friend
Scout APM is great for developers who want to find and fix performance issues in their applications. With Scout, we'll take care of the bugs so you can focus on building great things 🚀.
scoutapm.com