0
在我client.js文件我有以下...的WebRTC錯誤未定義配置
window.onload = function() {
var peerConnection;
var peerConnectionConfig = {
'iceServers': [{
'url': 'stun:stun.services.mozilla.com'
}, {
'url': 'stun:stun.l.google.com:19302'
}]
};
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
window.RTCIceCandidate = window.RTCIceCandidate || window.mozRTCIceCandidate || window.webkitRTCIceCandidate;
window.RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.webkitRTCSessionDescription;
var video = document.getElementById("video");
var remote = document.getElementById("remoteVideo");
var cameraStream = "";
serverConnection = new WebSocket('ws://127.0.0.1:3434');
serverConnection.onmessage = gotMessageFromServer;
serverConnection.onmessage = gotMessageFromServer;
var constraints = {
video: true,
audio: false,
};
if (navigator.getUserMedia) {
navigator.getUserMedia(constraints, getUserMediaSuccess, getUserMediaError);
} else {
alert('Your browser does not support getUserMedia API');
}
}
function getUserMediaSuccess(stream) {
localStream = stream;
video.src = window.URL.createObjectURL(stream);
}
function getUserMediaError(error) {
console.log(error);
}
function connect() {
start(true);
}
function start(isCaller) {
peerConnection = new RTCPeerConnection(peerConnectionConfig);
peerConnection.onicecandidate = gotIceCandidate;
peerConnection.onaddstream = gotRemoteStream;
peerConnection.addStream(localStream);
if (isCaller) {
peerConnection.createOffer(gotDescription, createOfferError);
}
}
function gotDescription(description) {
console.log('got description');
peerConnection.setLocalDescription(description, function() {
serverConnection.send(JSON.stringify({
'sdp': description
}));
}, function() {
console.log('set description error')
});
}
function gotIceCandidate(event) {
if (event.candidate != null) {
serverConnection.send(JSON.stringify({
'ice': event.candidate
}));
}
}
function gotRemoteStream(event) {
console.log("got remote stream");
remote.src = window.URL.createObjectURL(event.stream);
}
function createOfferError(error) {
console.log(error);
}
function gotMessageFromServer(message) {
if (!peerConnection) start(false);
var signal = JSON.parse(message.data);
if (signal.sdp) {
peerConnection.setRemoteDescription(new RTCSessionDescription(signal.sdp), function() {
peerConnection.createAnswer(gotDescription, createAnswerError);
});
} else if (signal.ice) {
peerConnection.addIceCandidate(new RTCIceCandidate(signal.ice));
}
}
我得到的是client.js:60 Uncaught ReferenceError: peerConnectionConfig is not defined
的錯誤,我定義peerConnectionConfig在頂部,如圖所示...
var peerConnectionConfig = {'iceServers': [{'url': 'stun:stun.services.mozilla.com'}, {'url': 'stun:stun.l.google.com:19302'}]};
而且start(isCaller)
當按下一個按鈕被調用,然後進入這一行...
peerConnection = new RTCPeerConnection(peerConnectionConfig);
...引發錯誤。任何理由爲什麼?
你是對的,但現在我得到另一個錯誤'TypeError:沒有足夠的參數RTCPeerConnection.setRemoteDescription.' – Bolboa
你遺漏了錯誤處理程序作爲參數... – mido
我明白了。這對我來說很混亂。我正在查看的API文檔不包含錯誤處理程序 – Bolboa