RTC.js (Demo)
Creating peer:
var socket = io.connect();
var peer = new RTCPeer({}, socket);
Connecting:
navigator.getUserMedia({ audio: true, video: true }, function (stream) {
peer.offer(to, [stream], function (err, con) {
if (err)
console.error(err);
else
con.on('streams', function (e) {
video.src = URL.createObjectURL(e.streams[0]);
}).on('rejected', function () {
console.log('peer rejected connection');
});
});
}, function(err){
console.error(err);
});
Accepting connection:
peer.on('offer', function(data){
navigator.getUserMedia({ audio: true, video: true }, function (stream) {
peer.accept(data, [stream], function (err, con) {
con.on('streams', function (e) {
video.src = URL.createObjectURL(strmArgs.streams[0]);
});
});
}, function () {
peer.reject(data, function () {
console.log('you rejected connection');
});
});
});
DataChannel:
send:
con.on('channel', function (channel) {
channel.send('hello friend');
});
receive:
con.on('channel', function () {
con.on('data', function (e) {
console.log(e.data);
});
});
RTCPeer
Events:
offer
- received offer;
Methods:
offer(to: string, streams: [MediaStream], callback)
- create offer;accept(offer, streams: [MediaStream], callback)
- accept offer;reject(offer, callback)
- reject offer;stopConnection(con: RTCConnection, to: string, callback)
- stop connection (send notification to peer);
RTCConnection
Events:
accepted
- offer accepted by remote peer;rejected
- offer rejected by remote peer;icegatheringcomplete
- gathering local ice candidates completed;offerfailed
- failed to send offer;offersucceeded
- offer sent;acceptfailed
- sending answer about accepting offer failed;acceptsucceeded
- sent answer about accepting offer;closed
- connection closed (triggers automatically wheniceConnectionState === 'disconnected'
);streams
- remote stream ready;channel
- DataChannel ready;data
- DataChannel received data;
Methods:
close()
- close connection;send(data: string)
- send data through DataChannel;