{"id":28987945,"url":"https://github.com/poroh/freewebrtc","last_synced_at":"2025-06-24T21:41:50.596Z","repository":{"id":200409336,"uuid":"614252394","full_name":"poroh/freewebrtc","owner":"poroh","description":"Ultimate quality implementation of WebRTC protocols in modern C++","archived":false,"fork":false,"pushed_at":"2024-07-09T08:05:27.000Z","size":573,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-24T05:51:33.376Z","etag":null,"topics":["cpp20","ice","rtp","stun","webrtc"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/poroh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-15T08:00:23.000Z","updated_at":"2024-08-26T09:15:03.000Z","dependencies_parsed_at":"2023-10-29T21:34:01.249Z","dependency_job_id":"79f15697-5b46-40d0-96af-bd5229dbd87d","html_url":"https://github.com/poroh/freewebrtc","commit_stats":null,"previous_names":["poroh/freewebrtc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/poroh/freewebrtc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poroh%2Ffreewebrtc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poroh%2Ffreewebrtc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poroh%2Ffreewebrtc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poroh%2Ffreewebrtc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/poroh","download_url":"https://codeload.github.com/poroh/freewebrtc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poroh%2Ffreewebrtc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261761754,"owners_count":23206002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp20","ice","rtp","stun","webrtc"],"created_at":"2025-06-24T21:41:50.065Z","updated_at":"2025-06-24T21:41:50.586Z","avatar_url":"https://github.com/poroh.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Free WebRTC project\n\nWelcome! Goal of this project is to rethink approach to implementation\nof communication protocols in C++. Many other implementations of WebRTC\nstack exist in this world but this implementation is different:\n\n- It does not have any strict dependencies (for example openssl is only one option that can be used for crypto functions)\n- It is written in software architecture-agnostic way:\n  - If you need just STUN message parser it is standalone\n  - If you need STUN client implementation - you can get it and put it in your environment by implenting sleeps / sends etc\n  - If you want secure random for STUN transaction identifiers you can replace it\n  - etc.\n- Code highly relies on strong typing\n- Thorough unit testing (175 tests and counting)\n- No quirky practicies with raw pointers and type casts.\n- Test coverage\n- Address sanitizer\n- -Wall -Werror -pedantic from the beginning\n- No global variables and side effects\n- References to standards everywhere where these standards implemented\n\n# Maturity\n\nProject is on very early stages in terms of completeness of WebRTC implementation. But pieces that are already built\nshould be very high level of quality.\n\nWhat is implemented:\n- RFC 2104: HMAC: Keyed-Hashing for Message Authentication\n- RFC 8489: Session Traversal Utilities for NAT (STUN)\n  - Conformant STUN message parser\n  - FINGERPRINT mechanism\n  - Authentication with short-term credential mechanism\n  - ALTERNATE-SERVER mechanism\n  - Backward compatibility with RFC3489\n  - All STUN attributes\n  - STUN statless server\n  - STUN UDP client with full transaction support\n  - Initial RTO adjustment using Karn's algorithm and RFC6298\n- RFC 5769: Test Vectors for Session Traversal Utilities for NAT (STUN)\n- RFC 8445: Interactive Connectivity Establishment (ICE)\n  - STUN Extensions (PRIORITY, ICE-CONTROLLED, ICE-CONTROLLING, USE-CANDIDATE)\n\n# Build\n\nKnown environment that can compile this code:\n- Ubuntu 22.04 with gcc/g++ compiler\n- macOS 12.4 with clang/clang++ compiler\n\nTo build static library and tests:\n```\ncd freewebrtc\ncmake -S . -B _build\nmake -C _build\n```\n\nRun tests\n```\n_build/tests/freewebrtc_tests\n```\n\n# Node.js examples\n\n## STUN UDP client\n\nAnd example of STUN client using node.js.\n\nPrerequisite: build freewebrtc (see above)\n\n```\ncd freewebrtc/examples/stun_client\nnpm run build\nnode ./index.js\n```\n\n## Echo server\n\nAs an example and to make development closer to real-life node.js example is implemented. \nThis is very early stage example of echo server that in future will\n\n- Negotiate ICE connectivity\n- Establish DTLS \n- Receive RTP streams and return it back to client\n\nBuild and run of the example:\n\nClient:\n```\ncd freewebrtc/examples/echo/frontend\nnpm install\nnpm run start\n```\n\nServer:\n```\ncd freewebrtc/examples/echo/backend\nnpm install\nnpm run build\n```\n\nAfter running server you can connect to localhost:8000 and this will be test.\nAnd don't expect too much from it. It is in the early stage.\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporoh%2Ffreewebrtc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fporoh%2Ffreewebrtc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporoh%2Ffreewebrtc/lists"}