Socket.io | WebRTC One-to-One Video Chat
HOME © Muaz Khan . @WebRTCWeb . Github . Latest issues . What's New?
#123456789
- Using socket.io (over node.js) for signaling
- It is one-to-one peers connection
How to use PeerConnection.js?
// http://www.webrtc-experiment.com/socket.io/PeerConnection.js var peer = new PeerConnection('http://domain:port'); peer.onStreamAdded = function(e) { document.body.appendChild(e.mediaElement); }; // the easiest method of "manual" peers connection is // call "sendParticipationRequest" and pass user-id of the target user peer.sendParticipationRequest(userid); // otherwise, call "startBroadcasting" // (behind the scene) this function will be invoked // recursively until a participant found peer.startBroadcasting();
Simplest Demo
var offerer = new PeerConnection('http://domain:port', 'message', 'offerer'); offerer.onStreamAdded = function(e) { document.body.appendChild(e.mediaElement); };
var answerer = new PeerConnection('http://domain:port', 'message', 'answerer'); answerer.onStreamAdded = function(e) { document.body.appendChild(e.mediaElement); }; answerer.sendParticipationRequest('offerer');
getUserMedia is "in-your-own-hands"!
It is upto you to decide when to capture the stream; how to capture; and the quality of the stream.
function getUserMedia(callback) { var hints = { audio: true, video: { optional: [], // capture super-hd stream! mandatory: { minWidth: 1280, minHeight: 720, maxWidth: 1920, maxHeight: 1080, minAspectRatio: 1.77 } } }; navigator.getUserMedia(hints, function (stream) { // you can use "peer.addStream" to attach stream // peer.addStream(stream); // or peer.MediaStream = stream; callback(stream); // preview local video var video = document.createElement('video'); video.srcObject = stream; video.controls = true; video.muted = true; peer.onStreamAdded({ mediaElement: video, userid: 'self', stream: stream }); }); }
Want to use Socket.io over Node.js?
var channel = location.href.replace(/\/|:|#|%|\.|\[|\]/g, ''); var sender = Math.round(Math.random() * 999999999) + 999999999; // var SIGNALING_SERVER = 'https://socketio-over-nodejs2.herokuapp.com:443/'; var SIGNALING_SERVER = 'https://webrtcweb.com:9559/'; io.connect(SIGNALING_SERVER).emit('new-channel', { channel: channel, sender: sender }); var socket = io.connect(SIGNALING_SERVER + channel); socket.send = function (message) { socket.emit('message', { sender: sender, data: message }); }; // pass "socket" object over the constructor instead of URL var peer = new PeerConnection(socket);
Check other signaling examples.