Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/js-platform/p2p

PeerConnection broker for WebRTC
https://github.com/js-platform/p2p

Last synced: 10 days ago
JSON representation

PeerConnection broker for WebRTC

Awesome Lists containing this project

README

        

# WebRTC peer-to-peer

This is a browser JS library that makes it easy to manage RTC peer connections, streams and data channels.
It's currently used in [emscripten](http://github.com/kripken/emscripten) to provide data transport for the posix sockets implementation.

## Requirements

You will need either Firefox, or Chrome.

## What it does

* Firefox and Chrome supported
* Binary transport using arraybuffers (Firefox only!)
* Multiple connections
* Broker service (on heroku), or run your own
* Connection timeouts

## What it doesn't do (yet!)

* Peer brokering for establishing new connections through existing peer-to-peer

## Quick start

Setting up a peer is easy. The code below will create a new peer and listen for incoming connections.
The `onconnection` handler is called each time a new connection is ready.

````javascript
// Create a new Peer
var peer = new Peer(
'wss://webrtc-p2p-broker.herokuapp.com', // You can use this broker if you don't want to set one up
{
binaryType: 'arraybuffer',
video: false,
audio: false
}
);

// Listen for incoming connections
peer.listen();

var connections = {};

// Handle new connections
peer.onconnection = function(connection) {
// Store connections here so we can use them later
connections[connection.id] = connection; // Each connection has a unique ID

connection.ondisconnect = function(reason) {
delete connections[connection.id];
};

connection.onerror = function(error) {
console.error(error);
};

// Handle messages from this channel
// The label will be 'reliable' or 'unreliable', depending on how it was received
connection.onmessage = function(label, message) {
console.log(label, message);
};

// Sends a message to the other peer using the reliable data channel
connection.send('reliable', 'hi!');

// The connection exposes the underlying media streams
// You can attach them to DOM elements to get video/audio, if available
console.log(connection.streams.local, connection.streams.remote);

// Closes the connection
// This will cause `ondisconnect` to fire
connection.close();
};

// Print our route when it's available
peer.onroute = function(route) {
// This is our routing address from the broker
// It's used by peers who wish to connect with us
console.log('route:', route);
};

peer.onerror = function(error) {
console.log(error);
};
````

Another peer can connect easily to the one we made above by calling `connect()` on its routing address.

````javascript
peer.connect(route);
````

## Demo

There are some files in the `demo` directory that offer an example.
You can load it [here](http://js-platform.github.com/p2p/examples/data-demo.html) and open the `connect` URL in another window.
For this example, the `route` is added to the URL query string so that the other peer can parse it and connect when the page loads, so all you need to share is the URL.