WebSockets | WebRTC One-to-One Video Chat
HOME © Muaz Khan . @WebRTCWeb . Github . Latest issues . What's New?
#123456789
- Using WebSockets for signaling
- It is one-to-one peers connection
Feedback
How to use PeerConnection.js?
// http://www.webrtc-experiment.com/websocket/PeerConnection.js
var peer = new PeerConnection('ws://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('ws://domain:port', 'offerer');
offerer.onStreamAdded = function(e) {
document.body.appendChild(e.mediaElement);
};
var answerer = new PeerConnection('ws://domain:port', '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 WebSocket over Node.js?
var channel = location.href.replace(/\/|:|#|%|\.|\[|\]/g, '');
var websocket = new WebSocket('wss://yourdomain:port');
websocket.onopen = function () {
websocket.push(JSON.stringify({
open: true,
channel: channel
}));
};
websocket.push = websocket.send;
websocket.send = function (data) {
websocket.push(JSON.stringify({
data: data,
channel: channel
}));
};
// pass "websocket" object over the constructor instead of URL
var peer = new PeerConnection(websocket);
Check other signaling examples.