bonfires

Enables WebRTC Peers to act as Signaling Servers

Bonfire.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

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

var listOfPeerDatachannels = [
    // This should contain datachannel objects 
];
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 listOfPeerDatachannels[0];
    },
    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(peerConnection.channels.bonfire, 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.