Skip to content

Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

Notifications You must be signed in to change notification settings

sipsorcery/webrtc-interop

Repository files navigation

Overview

This project aims to be a convenient location for WebRTC library developers to perform interoperability tests.

Who can Participate

The project is open to everyone.

The developers likely to interested are those involved in WebRTC projects.

Participating Libraries

The libraries that currently have a Client and Server implementation are:

  • aiortc: WebRTC and ORTC implementation for Python using asyncio.
  • libdatachannel: C/C++ WebRTC Data Channels and Media Transport standalone library (bindings for Rust, Node.js, and Unity)
  • Pion: Pure Go implementation of the WebRTC API.
  • webrtc-rs: A pure Rust implementation of WebRTC stack. Rewrite Pion WebRTC stack in Rust.
  • SIPSorcery: A WebRTC, SIP and VoIP library for C# and .NET. Designed for real-time communications apps.
  • werift-webrtc: WebRTC Implementation for TypeScript (Node.js)

Additional libraries/applications that currently have a Server implementation are:

  • gstreamer master branch, commit ID 637b0d8dc25b660d3b05370e60a95249a5228a39 20 Aug 2021 (gst-build commit ID ebcca1e5ead27cab1eafc028332b1984c84b10b2 26 Mar 2021).
  • janus version 0.10.7, commit ID 04229be3eeceb28dbc57a70a57928aab223895a5.
  • kurento version 6.16.1~1.g907a859.
  • libwebrtc m132 branch, commit ID f632fe9be9ce5cef5fcbfd42995271cb3fbb077d, commit date Tue Dec 10 09:27:33 2024 +0100.

Interoperability Tests

The current interoperability tests are:

  • Peer Connection Test: The initial, and simplest, test is a WebRTC Server Peer and/or Client Peer that tests the ability to negotiate a peer connection up to a successful DTLS handshake. A description of how the Peer Connection Test works is available here.

  • Data Channel Echo Test: This test builds on the Peer Connection Test and adds a data channel test. It tests the ability of the peers to create a data channel and then checks that the Server Peer can echo a string message sent by the Client Peer.

Peer Connection Test Results

Test run at 2025-01-04 15:49:03.433969

Server aiortc libdatachannel pion sipsorcery webrtc-rs werift
aiortc https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
gstreamer https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✘-red https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
janus https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
kurento https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✘-red https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✘-red https://img.shields.io/badge/-✔-green
libdatachannel https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
libwebrtc https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
pion https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
sipsorcery https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
webrtc-rs https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
werift https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green

Data Channel Echo Test Results

Test run at 2025-01-04 15:44:27.731689

Server libdatachannel sipsorcery werift
libdatachannel https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
sipsorcery https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green
werift https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green https://img.shields.io/badge/-✔-green

Get Started

If you are interested in adding a library to this project the recommended steps are listed below. The steps don't necessarily have to be completed in any specific order.

docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/aiortc-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/gstreamer-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/janus-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/kurento-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/libdatachannel-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/libwebrtc-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/pion-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/sipsorcery-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/webrtc-rs-webrtc-echo
docker run -it --rm --init -p 8080:8080 ghcr.io/sipsorcery/werift-webrtc-echo
docker run --entrypoint "/client.sh" ghcr.io/sipsorcery/pion-webrtc-echo http://host.docker.internal:8080/offer
docker run --entrypoint "/client.sh" ghcr.io/sipsorcery/sipsorcery-webrtc-echo http://host.docker.internal:8080/offer
etc...
  • Create a Dockerfile and add a Pull Request for it so your Peer Connection Test application(s) can be included in the automated testing.

About

Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published