bonfires

Enables WebRTC Peers to act as Signaling Servers

Bonfires.js

WebRTC/RTCPeerConnection signaling library to allow browser-based users to act as signaling servers for other peers.

Bonfire allows you to connect peers to other peers using existing peer connections. It won't create a peer network for you. Instead, it gives you the power to easily create your own network without having to worrying about the signaling process.

Bonfire allows you to do 3 things:

  1. Request peer signaling from another peer
  2. Listen for signaling requests from other peers
  3. Listen for connection requests from a signaling peer
  • If you use NPM, you can download Bonfires with this command: npm install bonfires
  • The main Bonfire file is bonfire.js
  • If you are using SignalFire.js, you will also need to include the following scripts that will be downloaded by NPM:
    1. SignalFire.js/client/src/signalfire-client.js
    2. SignalFire.js/client/src/adaptor.js
    3. SignalFire.js/client/src/socket.io.js

These files can also be found in the SignalFire.js GitHub repo: SignalFire.js

Bonfire is intended to easily integrate with SignalFire.js, which is used in the example below:

var mySignalingOptions = {
 
    // A function that will be called when another peer calls `requestPeer` 
    onSignalingRequestfunction(configData){
        // Must return a datachannel. The requesting peer will then be connected to the 
        // peer at the other end of the datachannel 
        return datachannelOfAnotherPeer;
    },
    respondingConnectorfunction(newPeerConnectionconfigDatacallback){
        var signalFireOptions = {
            // newPeerConnection must be passed as the SignalFire `server` option. 
            // This automates the RTCPeerConnection setup 
            server: newPeerConnection,
 
            // there are more required options for SignalFire.js 
            // More info can be found at: https://github.com/traviswimer/SignalFire.js 
        };
        theSocket = signalfire.connect(signalFireOptions, function(theConnection){});
    },
    initiatingConnectorfunction(newPeerConnectionconfigDatacallback){
        var signalFireOptions = {
            // newPeerConnection must be passed as the SignalFire `server` option. 
            // This automates the RTCPeerConnection setup 
            server: newPeerConnection,
            
            // there are more required options for SignalFire.js 
            // More info can be found at: https://github.com/traviswimer/SignalFire.js 
        };
        theSocket = signalfire.connect(signalFireOptions, function(theConnection){});
    }
};
var bonfireObject = bonfire(datachannelOfAPeer, mySignalingOptions);
bonfireObject.requestPeer({
    // optional parameters to pass to the signaling server 
});

To get a better understanding of how to use Bonfire, try out the code in the "examples" directory.