2017-04-24 3 views
0

Arbeits ich SimpleWebRTC Bibliothek verwende finden Sie hier: https://simplewebrtc.comSimpleWebRTC Peer Entdeckung nicht richtig

ich das Signal-Master-Lauf bekam die richtig STUN/TURN konfiguriert hat. Es ist in der Lage, andere Peers zu erkennen, also nehme ich an, dass STUN/TURN funktioniert. Mein Problem ist, dass wenn ein Peer sein lokales Video startet, andere Kollegen es nicht entdecken, OHNE dass sie die Seite neu laden. Ich möchte es so, dass es automatisch an andere Peers weitergegeben wird, ohne dass die Seite neu geladen werden muss. Ich denke, es hat mit dem unten stehenden Code zu tun (den ich aus dem Beispiel übernommen habe), aber ich bin mir nicht sicher.

Der Grund, warum ich autoRequestMedia auf false gesetzt habe, ist, dass Benutzer die Kameras der anderen Kollegen sehen können, ohne ihre eigenen Geräte einschalten zu müssen (auch warum ich webrtc.joinRoom im readyToCall-Ereignis nicht habe) .

Derzeit klicken Benutzer auf eine Schaltfläche und es wird die startLocalVideo(); und das Video wird im Element erstellt. Problem ist, dass nichts an andere Peers weitergegeben wird, es sei denn, die anderen Peers laden die Seite neu. Hoffe, dass alles erklärt, lassen Sie es mich wissen, wenn Sie weitere Informationen benötigen.

var webrtc = new SimpleWebRTC({ 
// the id/element dom element that will hold "our" video 
localVideoEl: 'localCam', 
// the id/element dom element that will hold remote videos 
remoteVideosEl: '', 
// immediately ask for camera access 
autoRequestMedia: false, 
autoRemoveVideos: true, 
url: 'MY SIGNAL-MASTER URL HERE', 
localVideo: { 
autoplay: true, // automatically play the video stream on the page 
mirror: false, // flip the local video to mirror mode (for UX) 
muted: true // mute local video stream to prevent echo 
} 
}); 

webrtc.joinRoom('testchannel'); 

// a peer video has been added 
webrtc.on('videoAdded', function (video, peer) { 
    console.log('video added', peer); 
    var remotes = document.getElementById('remoteCams'); 
    if (remotes) { 
     var container = document.createElement('div'); 
     container.className = 'videoContainer'; 
     container.id = 'container_' + webrtc.getDomId(peer); 
     container.appendChild(video); 
     // suppress contextmenu 
     // video.oncontextmenu = function() { return false; }; 
     remotes.appendChild(container); 
    } 
}); 

// a peer video was removed 
webrtc.on('videoRemoved', function (video, peer) { 
    console.log('video removed ', peer.nick); 
    var remotes = document.getElementById('remoteCams'); 
    var el = document.getElementById(peer ? 'container_' + webrtc.getDomId(peer) : 'localScreenContainer'); 
    if (remotes && el) { 
     remotes.removeChild(el); 
    } 
}); 

Antwort

1

Sie müssen die Anweisung in die readyToCall Hörer anschließen setzen:

webrtc.on('readyToCall', function() { 
    webrtc.joinRoom('roomname'); 
}) 

oder

legte den joinRoom Anruf in einer setTimout Funktion.