Hi, i'm trying to build broadcast using peerjs, but stream dies when 2nd peer connect to stream.
This is code on broadcaster side:
navigator.mediaDevices.getUserMedia({video: true, audio: true}).then(function (stream) {
let myvideo = document.createElement('video')
document.getElementById("my-video").appendChild(myvideo);
myvideo.muted = true;
myvideo.srcObject = stream;
myvideo.play();
let Peer = require('simple-peer');
let peer = new Peer({
initiator: true,
trickle: false,
stream: stream
});
peer.config = {
iceServers: {
urls: ["stun:stun.l.google.com:19302"]
}
};
peer.on('signal', function (data) {
yourID = JSON.stringify(data);
console.log(yourID);
});
let bc = setInterval(function () {
if (broadcast !== null) {
peers_checker = setInterval(function () {
axios.get('/peers/' + broadcast).then(function (response) {
if (peers !== response.data) {
peers = response.data;
peers.forEach(function (e) {
if (tried_to_connect.length > 0) {
for (let i = 0; i < tried_to_connect.length; i++) {
if (!tried_to_connect.includes(e.id)) {
peer.signal(e.sdp);
tried_to_connect.push(e.id);
connected_peers++;
document.getElementById('cpv').innerText = connected_peers;
}
}
} else {
peer.signal(e.sdp);
tried_to_connect.push(e.id);
connected_peers++;
document.getElementById('cpv').innerText = connected_peers;
}
})
}
});
}, 3000);
clearInterval(bc);
}
}, 500);
}, function (err) {
alert("Error starting webcam");
console.log(err);
});
This is integrated with laravel website and im using it to get peers data.
On the side of person watching i have this code:
let Peer = require('simple-peer');
let peer = new Peer({
initiator: false,
trickle: false,
});
peer.config = {
iceServers: {
urls: ["stun:stun.l.google.com:19302"]
}
};
if (host !== null) {
peer.signal(host);
}
peer.on('signal', function (data) {
yourID = JSON.stringify(data);
axios.post('/watcher/' + broadcast, {
sdp: yourID
}).then(function (response) {
if (response.data === "success") {
console.log("watcher sdp set");
}
});
});
peer.on('stream', function (stream) {
let video = document.createElement('video')
document.getElementById("guest-video").appendChild(video);
video.srcObject = stream;
video.setAttribute('id', 'g-v');
video.play();
});
This will work when i have 1 broadcaster and 1 person watching, as soon as i add 2nd person watching, stream dies.
I guess every peer should have something like its own instance, but i don't really get how that should be done? Anyone has some example/tip?
I need to build it to work for max 15 people