Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mafintosh/webrtc-swarm
Create a swarm of p2p connections using webrtc and a signalhub
https://github.com/mafintosh/webrtc-swarm
Last synced: 4 days ago
JSON representation
Create a swarm of p2p connections using webrtc and a signalhub
- Host: GitHub
- URL: https://github.com/mafintosh/webrtc-swarm
- Owner: mafintosh
- License: mit
- Created: 2015-04-26T20:32:22.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-11-06T21:49:23.000Z (about 4 years ago)
- Last Synced: 2025-01-04T00:17:23.074Z (11 days ago)
- Language: JavaScript
- Homepage:
- Size: 33.2 KB
- Stars: 383
- Watchers: 19
- Forks: 60
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-peer-to-peer - webrtc-swarm
- awesome-dat - webrtc-swarm - create a swarm of p2p connections using webrtc and a signalhub (Dat Core Modules / Networking)
- awesome-peer-to-peer - webrtc-swarm
README
# webrtc-swarm
> Create a swarm of p2p connections using webrtc and a
[signalhub](https://github.com/mafintosh/signalhub).```
npm install webrtc-swarm
```## Usage
``` js
var swarm = require('webrtc-swarm')
var signalhub = require('signalhub')var hub = signalhub('swarm-example', ['http://yourdomain.com'])
var sw = swarm(hub, {
wrtc: require('wrtc') // don't need this if used in the browser
})sw.on('peer', function (peer, id) {
console.log('connected to a new peer:', id)
console.log('total peers:', sw.peers.length)
})sw.on('disconnect', function (peer, id) {
console.log('disconnected from a peer:', id)
console.log('total peers:', sw.peers.length)
})
```## API
```js
var swarm = require('webrtc-swarm')
```### var sw = swarm(hub, opts)
Creates a new webrtc swarm using
[signalhub](https://github.com/mafintosh/signalhub) `hub` for discovery and
connection brokering.Valid keys for `opts` include:
- `wrtc` - (optional) a reference to the `wrtc` library, if using Node.
- `uuid` - (optional) a unique identifier for this peer. One is generated for
you if not supplied.
- `maxPeers` - (optional) the maximum number of peers you wish to connect to.
Defaults to unlimited.
- `wrap` - (optional) a function that can modify the WebRTC signaling data
before it gets send out. It's called with `wrap(outgoingSignalingData,
destinationSignalhubChannel)` and must return the wrapped signaling data.
- `unwrap` - (optional) a function that can modify the WebRTC signaling data
before it gets processed. It's called with `unwrap(incomingData,
sourceSignalhubChannel)` and must return the raw signaling data.Additional optional keys can be passed through to the underlying
[simple-peer](https://www.npmjs.com/package/simple-peer) instances:- `channelConfig` - custom webrtc data channel configuration (used by
`createDataChannel`)
- `config` - custom webrtc configuration (used by `RTCPeerConnection`
constructor)
- `stream` - if video/voice is desired, pass stream returned from
`getUserMedia`### sw.close()
Disconnect from swarm
### sw.on('peer|connect', peer, id)
`peer` and `connect` are interchangeable. Fires when a connection has been
established to a new peer `peer`, with unique id `id`.### sw.on('disconnect', peer, id)
Fires when an existing peer connection is lost.
`peer` is a [simple-peer](https://www.npmjs.com/package/simple-peer) instance.
### sw.on('close')
Fires when all peer and signalhub connections are closed
### sw.peers
A list of peers that `sw` is currently connected to.
### swarm.WEBRTC_SUPPORT
Detect native WebRTC support in the javascript environment.
```js
var swarm = require('webrtc-swarm')if (swarm.WEBRTC_SUPPORT) {
// webrtc support!
} else {
// fallback
}
```## License
MIT