Fixed glaring WebRTC Negotation bug.
This commit is contained in:
parent
29fb28ad5f
commit
6acf7ce54f
1 changed files with 16 additions and 10 deletions
|
|
@ -93,6 +93,7 @@ class webRTCHandler{
|
||||||
|
|
||||||
//If we didn't get any audio tracks from the DisplayMedia portion of the API
|
//If we didn't get any audio tracks from the DisplayMedia portion of the API
|
||||||
if(this.broadcastingStream == null || this.broadcastingStream.getAudioTracks().length == 0){
|
if(this.broadcastingStream == null || this.broadcastingStream.getAudioTracks().length == 0){
|
||||||
|
try{
|
||||||
//Bug user for an audio device
|
//Bug user for an audio device
|
||||||
const tempStream = await navigator.mediaDevices.getUserMedia({video: false, audio: true});
|
const tempStream = await navigator.mediaDevices.getUserMedia({video: false, audio: true});
|
||||||
|
|
||||||
|
|
@ -101,6 +102,9 @@ class webRTCHandler{
|
||||||
//Add to existing broadcast stream
|
//Add to existing broadcast stream
|
||||||
this.broadcastingStream.addTrack(track);
|
this.broadcastingStream.addTrack(track);
|
||||||
}
|
}
|
||||||
|
}catch(err){
|
||||||
|
console.warn("Unable to get audio for stream!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -231,7 +235,9 @@ class webRTCHandler{
|
||||||
handleIceCandidate(data){
|
handleIceCandidate(data){
|
||||||
//If we're broadcasting
|
//If we're broadcasting
|
||||||
if(this.isBroadcasting){
|
if(this.isBroadcasting){
|
||||||
|
//Find the related user object
|
||||||
const user = this.currentViewers.get(data.source.user);
|
const user = this.currentViewers.get(data.source.user);
|
||||||
|
//allow them to handle it
|
||||||
user.handleIceCandidate(data);
|
user.handleIceCandidate(data);
|
||||||
//If we're receiving a stream
|
//If we're receiving a stream
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -267,7 +273,7 @@ class webRTCHandler{
|
||||||
}
|
}
|
||||||
|
|
||||||
handleConnectionState(data){
|
handleConnectionState(data){
|
||||||
if(this.currentStream.connectionState == "failed"){
|
if(!this.isBroadcasting && this.currentStream.connectionState == "failed"){
|
||||||
let icon = document.createElement('img');
|
let icon = document.createElement('img');
|
||||||
icon.src = "/img/rtcerror.png";
|
icon.src = "/img/rtcerror.png";
|
||||||
|
|
||||||
|
|
@ -355,7 +361,7 @@ class connectedViewer{
|
||||||
await peer.setLocalDescription(answer);
|
await peer.setLocalDescription(answer);
|
||||||
|
|
||||||
//Setup peer ICE Candidate event listner
|
//Setup peer ICE Candidate event listner
|
||||||
peer.addEventListener('icecandidate', this.sendIceCandidate.bind(this));
|
peer.addEventListener('icecandidate', (event)=>{this.sendIceCandidate(event, socket)});
|
||||||
|
|
||||||
//Save peer by socket identifier
|
//Save peer by socket identifier
|
||||||
this.peers.set(socket, peer);
|
this.peers.set(socket, peer);
|
||||||
|
|
@ -368,14 +374,14 @@ class connectedViewer{
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
sendIceCandidate(event){
|
sendIceCandidate(event, socket){
|
||||||
//If we have a candidate
|
//If we have a candidate
|
||||||
if(event.candidate != null){
|
if(event.candidate != null){
|
||||||
//Send that shit off!
|
//Send that shit off!
|
||||||
this.client.socket.emit('relayRTCData',{
|
this.client.socket.emit('relayRTCData',{
|
||||||
type: 'candidate',
|
type: 'candidate',
|
||||||
body: event.candidate,
|
body: event.candidate,
|
||||||
recipient: this.socket
|
recipient: socket
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue