WebRTC在本地服务器上运行良好,但是当我将它部署到VPS时,我只能看到localVideo,romoteVideo只不过是一个黑色的方形

WebRTC在本地服务器上运行良好,但是当我部署到VPS时,我只能看到localVideo,romoteVideo只是一个黑色的方块。

我的webrtc代码是:

var socket = io.connect(); var remotevid = document.getElementById('webrtc-remotevid'); var localStream = null; var peerConn = null; var started = false; var channelReady = false; var mediaConstraints = {'mandatory': { 'OfferToReceiveAudio':true, 'OfferToReceiveVideo':true }}; var isVideoMuted = true; var videoCamera = new tracking.VideoCamera().hide().render().renderVideoCanvas(); function setLocalAndSendMessage(sessionDescription) { peerConn.setLocalDescription(sessionDescription); console.log("Sending: SDP"); console.log(sessionDescription); socket.json.send(sessionDescription); } function createOfferFailed() { console.log("Create Answer failed"); } // start the connection upon user request function connectvid() { console.log(localStream); if (!started && localStream && channelReady) { createPeerConnection(); started = true; peerConn.createOffer(setLocalAndSendMessage, createOfferFailed, mediaConstraints); } else { alert("Local stream not running yet - try again."); } } // stop the connection upon user request function hangUp() { console.log("Hang up."); socket.json.send({type: "bye"}); stop(); } function stop() { peerConn.close(); peerConn = null; started = false; } // socket: channel connected socket.on('connect', onChannelOpened) .on('message', onMessage); function onChannelOpened(evt) { console.log('Channel opened.'); channelReady = true; } function createAnswerFailed() { console.log("Create Answer failed"); } // socket: accept connection request function onMessage(evt) { if (evt.type === 'offer') { console.log("Received offer...") if (!started) { createPeerConnection(); started = true; } console.log('Creating remote session description...' ); peerConn.setRemoteDescription(new RTCSessionDescription(evt)); console.log('Sending answer...'); peerConn.createAnswer(setLocalAndSendMessage, createAnswerFailed, mediaConstraints); } else if (evt.type === 'answer' && started) { console.log('Received answer...'); console.log('Setting remote session description...' ); peerConn.setRemoteDescription(new RTCSessionDescription(evt)); } else if (evt.type === 'candidate' && started) { console.log('Received ICE candidate...'); var candidate = new RTCIceCandidate({sdpMLineIndex:evt.sdpMLineIndex, sdpMid:evt.sdpMid, candidate:evt.candidate}); console.log(candidate); peerConn.addIceCandidate(candidate); } else if (evt.type === 'bye' && started) { console.log("Received bye"); stop(); } } function createPeerConnection() { console.log("Creating peer connection"); RTCPeerConnection = webkitRTCPeerConnection || mozRTCPeerConnection; var pc_config = {"iceServers":[]}; try { peerConn = new RTCPeerConnection(pc_config); } catch (e) { console.log("Failed to create PeerConnection, exception: " + e.message); } // send any ice candidates to the other peer peerConn.onicecandidate = function (evt) { if (event.candidate) { console.log('Sending ICE candidate...'); console.log(evt.candidate); socket.json.send({type: "candidate", sdpMLineIndex: evt.candidate.sdpMLineIndex, sdpMid: evt.candidate.sdpMid, candidate: evt.candidate.candidate}); } else { console.log("End of candidates."); } }; console.log('Adding local stream...'); console.log(localStream); peerConn.addStream(localStream); // peerConn.addStream(localScreen); peerConn.addEventListener("addstream", onRemoteStreamAdded, false); // when remote adds a stream, hand it on to the local video element function onRemoteStreamAdded(event) { console.log("Added remote stream"); remotevid.src = window.URL.createObjectURL(event.stream); } // when remote removes a stream, remove it from the local video element } socket.on('disconnect', function() { remotevid.src = ""; started = false; }) 

我不知道有什么问题,它有铬标志的问题?

它在本地工作,因为您可能只在您的本地networking尝试过。 当它上市,IP差异,代理都来照片。 你应该先设置一个stun服务器。 有几个公共电击服务器可用。

其中一个例如是stun.l.google.com:19302

如果您遇到问题,请检查确切的错误。

Interesting Posts