Create a swarm of p2p connections using webrtc and a signalhub
MIT License
Create a swarm of p2p connections using webrtc and a signalhub.
npm install webrtc-swarm
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)
})
var swarm = require('webrtc-swarm')
Creates a new webrtc swarm using
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 formaxPeers
- (optional) the maximum number of peers you wish to connect to.wrap
- (optional) a function that can modify the WebRTC signaling datawrap(outgoingSignalingData, destinationSignalhubChannel)
and must return the wrapped signaling data.unwrap
- (optional) a function that can modify the WebRTC signaling dataunwrap(incomingData, sourceSignalhubChannel)
and must return the raw signaling data.Additional optional keys can be passed through to the underlying simple-peer instances:
channelConfig
- custom webrtc data channel configuration (used bycreateDataChannel
)config
- custom webrtc configuration (used by RTCPeerConnection
stream
- if video/voice is desired, pass stream returned fromgetUserMedia
Disconnect from swarm
peer
and connect
are interchangeable. Fires when a connection has been
established to a new peer peer
, with unique id id
.
Fires when an existing peer connection is lost.
peer
is a simple-peer instance.
Fires when all peer and signalhub connections are closed
A list of peers that sw
is currently connected to.
Detect native WebRTC support in the javascript environment.
var swarm = require('webrtc-swarm')
if (swarm.WEBRTC_SUPPORT) {
// webrtc support!
} else {
// fallback
}
MIT