rustysignal

Cargo

A signaling server written in Rust for WebRTC that supports SSL. The server is used to enable nodes on the network to exchange metadata in order to establish a peer-to-peer connection. This signaling server supplies the ability to set usernames on the network, and users have the ability to send messages to a specific peer, or broadcast messages to everyone on the network.

Installation

You need Cargo to be able to install this binary.

Install the server by writing cargo install rustysignal in a terminal. Once installed, you can start it by executing rustysignal 127.0.0.1:3012 in your terminal, which will start the server and listen to messages on the address 127.0.0.1:3012.

It is also possible to run the server using SSL. Do this by specifying the feature accordingly: rustysignal --features ssl 127.0.0.1:3015 <CERT> <KEY>. Note that this will require your own certificate.

Connecting to the network as a peer

When connecting to the network, i.e. Websocket, one should provide a username as a simple argument.

wss://signalserverhost?user=yourname

Peers can be found by: 1. A one-to-one request via a provided username, which sends your information to only the node tied to that username. 2. A one-to-all request, which sends your information to everyone on the network. 3. A one-to-self request, which sends your information back to yourself.

To specify which type of method, specify it in your websocket send command in a field called protocol.

var json_message = { protocol: "one-to-one", to: "receiver_username", "action": actiontype, "data": data }; ws.send(JSON.stringify(json_message));