Skip to content
Distributed WebRTC Signalling
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE fix #126 Dec 12, 2018

DWRTC - Distributed WebRTC Signalling

Sonar Rating CircleCI

DWRTC extends WebRTC with a decentralized connection setup (signaling). Users connect to different nodes on the Internet. These nodes are connected via a P2P network which stores the routing information. The connection setup messages are routed through this network. The WebRTC connection can then be used to send data, audio and video directly from web browser to web browser.

As a proof of concept, the project also includes a video call application using DWRTC to establish calls to a partner.

Project Page:

WebSocket API documentation:

Full Kdoc documentation:

JS documentation: src/main/resources/web/


To run DWRTC the easiest way is to use the Docker container:

docker run dwrtc/dwrtc

Use the environment variables mentioned in the options section to configure DWRTC.


Options are loaded using Konfig. The priorities are:

  1. Command Line Properties overrides
  2. Environment Variables overrides
  3. Property file

Use the "dot"-syntax (http.port) for command line and property file, and "underscore"-syntax for environment variables (HTTP_PORT).

The options are:

  • Peer Port (Int): peer.port/PEER_PORT: port the TomP2P peer runs on
  • Webserver IP (String): http.ip/HTTP_IP: the IP the web server binds to (e.g. "", "localhost", "")
  • Webserver Port (Int): http.port/HTTP_PORT: the port the web server binds to
  • Bootstrap Peer (comma-separated list of HOST:PORT pairs): bootstrap.peer/BOOTSTRAP_PEER the list of peers to bootstrap to (e.g. ",")

Local Usage

$ docker-compose up -d
$ docker-compose ps

    Name               Command           State                        Ports
dwrtc_node1_1   java -jar /app/app.jar   Up>7000/tcp,>7532/tcp
dwrtc_node2_1   java -jar /app/app.jar   Up>7000/tcp,>7532/tcp

Connect to localhost:PORT1 for node1 and localhost:PORT2 for node2 via a web browser. You can also connect to the TomP2P ports (32768/32770 in this case) to bootstrap any instance running outside of this network.

You can’t perform that action at this time.