This project aims to be a convenient location for WebRTC library developers to perform interoperability tests.
The project is open to everyone.
The developers likely to interested are those involved in WebRTC projects.
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 ID637b0d8dc25b660d3b05370e60a95249a5228a39
20 Aug 2021 (gst-build commit IDebcca1e5ead27cab1eafc028332b1984c84b10b2
26 Mar 2021). - janus version
0.10.7
, commit ID04229be3eeceb28dbc57a70a57928aab223895a5
. - kurento version
6.16.1~1.g907a859
. - libwebrtc
m90
branch, commit IDa4da76a880d31f012038ac721ac4abc7ea3ffa2d
, commit dateFri Apr 9 21:03:39 2021 -0700
.
The current interoperability tests are:
-
Peer Connection Test: The initial, and simplest, test is a WebRTC
Server Peer
and/orClient 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 theServer Peer
can echo a string message sent by theClient Peer
.
Test run at 2024-11-15 21:40:38.879065
Server | aiortc | libdatachannel | pion | sipsorcery | webrtc-rs | werift |
---|---|---|---|---|---|---|
aiortc | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
gstreamer | ✔ | ✔ | ✔ | ✔ | ✔ | |
janus | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
kurento | ✔ | ✔ | ✔ | ✔ | ||
libdatachannel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
libwebrtc | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
pion | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
sipsorcery | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
webrtc-rs | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
werift | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Test run at 2024-11-15 21:36:24.048341
Server | libdatachannel | sipsorcery | werift |
---|---|---|---|
libdatachannel | ✔ | ✔ | ✔ |
sipsorcery | ✔ | ✔ | ✔ |
werift | ✔ | ✔ | ✔ |
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.
-
Write a Peer Connection Test Client application according to the specification or base it off an existing application.
-
Test your client by building and running one of the Peer Connection Test Servers or you can use one of the Peer Connection Test Server Docker Images:
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
-
If you encounter any problems open an Issue. When done submit a Pull Request for your application.
-
Repeat the process for a Peer Connection Test Server.
-
Create a Dockerfile and add a Pull Request for it so your Peer Connection Test application(s) can be included in the automated testing.