2017-04-24 1 views
0

J'utilise la bibliothèque SimpleWebRTC trouvée ici: https://simplewebrtc.comSimpleWebRTC Discovery Peer ne fonctionne pas correctement

J'ai obtenu le fonctionnement signal maître qui a STUN/TURN correctement configuré. Il est capable de détecter d'autres pairs, donc je suppose que STUN/TURN est fonctionnel. Mon problème est que lorsqu'un pair démarre sa vidéo locale, d'autres pairs ne la découvrent pas à moins qu'ils rechargent la page. Je le veux donc il est automatiquement poussé à d'autres pairs sans avoir besoin de recharger la page. Je pense que cela a à voir avec le code ci-dessous (que j'ai pris de l'exemple) mais je ne suis pas sûr. La raison pour laquelle autoRequestMedia est false est parce que je veux que les utilisateurs puissent voir les caméras des autres camarades sans avoir à allumer leurs propres appareils (aussi pourquoi je n'ai pas webrtc.joinRoom dans l'événement readyToCall) .

Actuellement, les utilisateurs cliquent sur un bouton et il va déclencher le startLocalVideo(); et la vidéo est créée dans l'élément. Le problème est que rien n'est poussé à d'autres pairs à moins que les autres pairs rechargent la page. J'espère que cela explique tout, faites le moi savoir si vous avez besoin de plus de détails.

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); 
    } 
}); 

Répondre

1

Vous devez mettre la jointure déclaration dans l'auditeur readyToCall:

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

ou

mettre l'appel joinRoom dans une fonction setTimout.