Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/js-platform/p2p
- Owner: js-platform
- Created: 2012-10-27T16:15:44.000Z (about 12 years ago)
- Default Branch: develop
- Last Pushed: 2016-01-25T04:25:48.000Z (almost 9 years ago)
- Last Synced: 2024-07-31T14:09:27.168Z (3 months ago)
- Language: JavaScript
- Size: 703 KB
- Stars: 313
- Watchers: 31
- Forks: 40
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-peer-to-peer - p2p
- awesome-peer-to-peer - p2p
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 IDconnection.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.